COMPILATION LISTING OF SEGMENT display_pl1_map Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1613.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* program to print map of generated object code 12* 13* Modified: 22 May 1971 by BLW for Version II 14* Modified: 24 July 1972 by BLW 15* Modified: 13 Feb 1977 by RAB for multiple conditions/on-unit */ 16 17 display_pl1_map: proc(pt); 18 19 dcl pt ptr; /* points at root block */ 20 21 dcl p ptr, 22 line aligned char(120) int static, 23 n fixed bin(17), 24 pl1_print$non_varying_nl entry(char(*) aligned,fixed bin), 25 pos fixed bin int static, 26 old_id bit(27) int static, 27 bindec entry(fixed bin) returns(char(12)), 28 binoct entry(fixed bin) returns(char(12)); 29 30 dcl (fixed,null,substr,string) builtin; 31 1 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 1 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 1 3 /* format: style3,idind30 */ 1 4 1 5 declare 1 block aligned based, 1 6 2 node_type bit (9) unaligned, 1 7 2 source_id structure unaligned, 1 8 3 file_number bit (8), 1 9 3 line_number bit (14), 1 10 3 statement_number bit (5), 1 11 2 father ptr unaligned, 1 12 2 brother ptr unaligned, 1 13 2 son ptr unaligned, 1 14 2 declaration ptr unaligned, 1 15 2 end_declaration ptr unaligned, 1 16 2 default ptr unaligned, 1 17 2 end_default ptr unaligned, 1 18 2 context ptr unaligned, 1 19 2 prologue ptr unaligned, 1 20 2 end_prologue ptr unaligned, 1 21 2 main ptr unaligned, 1 22 2 end_main ptr unaligned, 1 23 2 return_values ptr unaligned, 1 24 2 return_count ptr unaligned, 1 25 2 plio_ps ptr unaligned, 1 26 2 plio_fa ptr unaligned, 1 27 2 plio_ffsb ptr unaligned, 1 28 2 plio_ssl ptr unaligned, 1 29 2 plio_fab2 ptr unaligned, 1 30 2 block_type bit (9) unaligned, 1 31 2 prefix bit (12) unaligned, 1 32 2 like_attribute bit (1) unaligned, 1 33 2 no_stack bit (1) unaligned, 1 34 2 get_data bit (1) unaligned, 1 35 2 flush_at_call bit (1) unaligned, 1 36 2 processed bit (1) unaligned, 1 37 2 text_displayed bit (1) unaligned, 1 38 2 number fixed bin (9) unsigned unaligned, 1 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 1 40 2 temp_list ptr, 1 41 2 entry_list ptr, 1 42 2 o_and_s ptr, 1 43 2 why_nonquick aligned, 1 44 3 auto_adjustable_storage bit (1) unaligned, 1 45 3 returns_star_extents bit (1) unaligned, 1 46 3 stack_extended_by_args bit (1) unaligned, 1 47 3 invoked_by_format bit (1) unaligned, 1 48 3 format_statement bit (1) unaligned, 1 49 3 io_statements bit (1) unaligned, 1 50 3 assigned_to_entry_var bit (1) unaligned, 1 51 3 condition_statements bit (1) unaligned, 1 52 3 no_owner bit (1) unaligned, 1 53 3 recursive_call bit (1) unaligned, 1 54 3 options_non_quick bit (1) unaligned, 1 55 3 options_variable bit (1) unaligned, 1 56 3 never_referenced bit (1) unaligned, 1 57 3 pad_nonquick bit (5) unaligned, 1 58 2 prologue_flag bit (1) unaligned, 1 59 2 options_main bit (1) unaligned, 1 60 2 pad bit (16) unaligned, 1 61 2 number_of_entries fixed bin (17), 1 62 2 level fixed bin (17), 1 63 2 last_auto_loc fixed bin (17), 1 64 2 symbol_block fixed bin (17), 1 65 2 entry_info fixed bin (18), 1 66 2 enter structure unaligned, 1 67 3 start fixed bin (17), 1 68 3 end fixed bin (17), 1 69 2 leave structure unaligned, 1 70 3 start fixed bin (17), 1 71 3 end fixed bin (17), 1 72 2 owner ptr; 1 73 1 74 declare max_block_number fixed bin internal static options (constant) initial (511); 1 75 1 76 /* END INCLUDE FILE ... block.incl.pl1 */ 32 2 1 dcl ( root_block initial("000000001"b), 2 2 external_procedure initial("000000010"b), 2 3 internal_procedure initial("000000011"b), 2 4 begin_block initial("000000100"b), 2 5 on_unit initial("000000101"b)) internal static bit(9) aligned options(constant); 33 3 1 /* *********************************************************** 3 2* * * 3 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 3 4* * * 3 5* *********************************************************** */ 3 6 /* BEGIN INCLUDE FILE ... statement.incl.pl1 */ 3 7 /* Internal interface of the PL/I compiler */ 3 8 3 9 dcl 1 statement based aligned, 3 10 2 node_type bit(9) unaligned, 3 11 2 source_id structure unaligned, 3 12 3 file_number bit(8), 3 13 3 line_number bit(14), 3 14 3 statement_number bit(5), 3 15 2 next ptr unaligned, 3 16 2 back ptr unaligned, 3 17 2 root ptr unaligned, 3 18 2 labels ptr unaligned, 3 19 2 reference_list ptr unaligned, 3 20 2 state_list ptr unaligned, 3 21 2 reference_count fixed(17) unaligned, 3 22 2 ref_count_copy fixed(17) unaligned, 3 23 2 object structure unaligned, 3 24 3 start fixed(17), 3 25 3 finish fixed(17), 3 26 2 source structure unaligned, 3 27 3 segment fixed(11), 3 28 3 start fixed(23), 3 29 3 length fixed(11), 3 30 2 prefix bit(12) unaligned, 3 31 2 optimized bit(1) unaligned, 3 32 2 free_temps bit(1) unaligned, 3 33 2 LHS_in_RHS bit(1) unaligned, 3 34 2 statement_type bit(9) unaligned, 3 35 2 bits structure unaligned, 3 36 3 processed bit(1) unaligned, 3 37 3 put_in_profile bit(1) unaligned, 3 38 3 generated bit(1) unaligned, 3 39 3 snap bit(1) unaligned, 3 40 3 system bit(1) unaligned, 3 41 3 irreducible bit(1) unaligned, 3 42 3 checked bit(1) unaligned, 3 43 3 save_temps bit(1) unaligned, 3 44 3 suppress_warnings bit(1) unaligned, 3 45 3 force_nonquick bit(1) unaligned, 3 46 3 expanded_by_name bit(1) unaligned, 3 47 3 begins_loop bit(1) unaligned, 3 48 3 pad bit(24) unaligned; 3 49 3 50 /* END INCLUDE FILE ... statement.incl.pl1 */ 34 4 1 /* statement types */ 4 2 4 3 dcl ( unknown_statement initial("000000000"b), 4 4 allocate_statement initial("000000001"b), 4 5 assignment_statement initial("000000010"b), 4 6 begin_statement initial("000000011"b), 4 7 call_statement initial("000000100"b), 4 8 close_statement initial("000000101"b), 4 9 declare_statement initial("000000110"b), 4 10 lock_statement initial("000000111"b), 4 11 delete_statement initial("000001000"b), 4 12 display_statement initial("000001001"b), 4 13 do_statement initial("000001010"b), 4 14 else_clause initial("000001011"b), 4 15 end_statement initial("000001100"b), 4 16 entry_statement initial("000001101"b), 4 17 exit_statement initial("000001110"b), 4 18 format_statement initial("000001111"b), 4 19 free_statement initial("000010000"b), 4 20 get_statement initial("000010001"b), 4 21 goto_statement initial("000010010"b), 4 22 if_statement initial("000010011"b), 4 23 locate_statement initial("000010100"b), 4 24 null_statement initial("000010101"b), 4 25 on_statement initial("000010110"b), 4 26 open_statement initial("000010111"b), 4 27 procedure_statement initial("000011000"b), 4 28 put_statement initial("000011001"b), 4 29 read_statement initial("000011010"b), 4 30 return_statement initial("000011011"b), 4 31 revert_statement initial("000011100"b), 4 32 rewrite_statement initial("000011101"b), 4 33 signal_statement initial("000011110"b), 4 34 stop_statement initial("000011111"b), 4 35 system_on_unit initial("000100000"b), 4 36 unlock_statement initial("000100001"b), 4 37 wait_statement initial("000100010"b), 4 38 write_statement initial("000100011"b), 4 39 default_statement initial("000100100"b), 4 40 continue_statement initial("000100101"b)) bit(9) internal static aligned options(constant); 35 5 1 /* BEGIN INCLUDE FILE ... operator.incl.pl1 */ 5 2 5 3 /* Modified: 2 Apr 1980 by PCK to add max_number_of_operands */ 5 4 5 5 /* format: style3 */ 5 6 dcl 1 operator based aligned, 5 7 2 node_type bit (9) unaligned, 5 8 2 op_code bit (9) unaligned, 5 9 2 shared bit (1) unaligned, 5 10 2 processed bit (1) unaligned, 5 11 2 optimized bit (1) unaligned, 5 12 2 number fixed (14) unaligned, 5 13 2 operand dimension (n refer (operator.number)) ptr unaligned; 5 14 5 15 dcl max_number_of_operands 5 16 fixed bin (15) int static options (constant) initial (32767); 5 17 5 18 /* END INCLUDE FILE ... operator.incl.pl1 */ 36 37 38 call pl1_print$non_varying_nl("",0); 39 call pl1_print$non_varying_nl((7)" LINE LOC ",0); 40 41 line = ""; 42 pos = 1; 43 old_id = "0"b; 44 call prt_block(pt -> block.son); 45 46 if pos > 1 then call pl1_print$non_varying_nl(line,pos-4); 47 48 prt_block: proc(ptx); 49 50 dcl ptx ptr unaligned; 51 52 dcl (pt,p) ptr; 53 54 pt = ptx; 55 if pt = null then return; 56 57 if pt -> block.block_type = begin_block 58 then do; 59 db: call prt_block(pt -> block.brother); 60 return; 61 end; 62 63 if pt -> block.block_type = on_unit then goto db; 64 65 goto l1; 66 67 prt_other_block: entry(ptx); 68 69 pt = ptx; 70 71 l1: p = pt -> block.prologue; 72 if p = null then goto do_main; 73 74 do while(p ^= null); 75 call prt_statement(p); 76 p = p -> statement.next; 77 end; 78 79 do_main: p = pt -> block.main; 80 do while(p ^= null); 81 call prt_statement(p); 82 p = p -> statement.next; 83 end; 84 85 /* since the code_generator turns the processed bit ON for 86* each block, turning it OFF will indicate that we have 87* processed it */ 88 89 pt -> block.processed = "0"b; 90 91 call prt_block(pt -> block.son); 92 93 if pt -> block.block_type ^= begin_block 94 then if pt -> block.block_type ^= on_unit 95 then call prt_block(pt -> block.brother); 96 97 end; 98 99 prt_statement: proc(q); 100 101 dcl q ptr, 102 bit_s_id bit(27), 103 (i,ln) fixed bin; 104 105 i = q -> statement.object.start; 106 if i = q -> statement.object.finish then goto no; 107 108 bit_s_id = string(q -> statement.source_id); 109 if bit_s_id = old_id then goto no; 110 111 ln = fixed(substr(bit_s_id,9,14),14); 112 substr(line,pos+3,4) = substr(bindec(ln),9,4); 113 substr(line,pos+8,6) = substr(binoct(i),7,6); 114 115 ln = fixed(substr(bit_s_id,1,8),8); 116 if ln ^= 0 then substr(line,pos,2) = substr(bindec(ln),11,2); 117 118 pos = pos + 17; 119 120 if pos >= 112 121 then do; 122 call pl1_print$non_varying_nl(line,pos-4); 123 line = ""; 124 pos = 1; 125 end; 126 127 old_id = bit_s_id; 128 129 no: if q -> statement.statement_type = begin_statement 130 then call prt_other_block(q -> statement.root); 131 else if q -> statement.statement_type = on_statement 132 then if q -> statement.root -> operand(3) -> block.processed 133 then call prt_other_block(q -> statement.root -> operand(3)); 134 135 end; 136 137 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1007.0 display_pl1_map.pl1 >spec>on>pl128d>display_pl1_map.pl1 32 1 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 33 2 05/03/76 1320.8 block_types.incl.pl1 >ldd>include>block_types.incl.pl1 34 3 04/07/83 1635.0 statement.incl.pl1 >ldd>include>statement.incl.pl1 35 4 05/03/76 1320.4 statement_types.incl.pl1 >ldd>include>statement_types.incl.pl1 36 5 07/21/80 1546.3 operator.incl.pl1 >ldd>include>operator.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. begin_block constant bit(9) initial dcl 2-1 ref 57 93 begin_statement constant bit(9) initial dcl 4-3 ref 129 bindec 000052 constant entry external dcl 21 ref 112 116 binoct 000054 constant entry external dcl 21 ref 113 bit_s_id 000112 automatic bit(27) unaligned dcl 101 set ref 108* 109 111 115 127 block based structure level 1 dcl 1-5 block_type 24 based bit(9) level 2 packed unaligned dcl 1-5 ref 57 63 93 93 brother 2 based pointer level 2 packed unaligned dcl 1-5 set ref 59* 93* finish 10(18) based fixed bin(17,0) level 3 packed unaligned dcl 3-9 ref 106 fixed builtin function dcl 30 ref 111 115 i 000113 automatic fixed bin(17,0) dcl 101 set ref 105* 106 113* line 000010 internal static char(120) dcl 21 set ref 41* 46* 112* 113* 116* 122* 123* ln 000114 automatic fixed bin(17,0) dcl 101 set ref 111* 112* 115* 116 116* main 13 based pointer level 2 packed unaligned dcl 1-5 ref 79 next 1 based pointer level 2 packed unaligned dcl 3-9 ref 76 82 null builtin function dcl 30 ref 55 72 74 80 object 10 based structure level 2 packed unaligned dcl 3-9 old_id 000047 internal static bit(27) unaligned dcl 21 set ref 43* 109 127* on_statement constant bit(9) initial dcl 4-3 ref 131 on_unit constant bit(9) initial dcl 2-1 ref 63 93 operand 1 based pointer array level 2 packed unaligned dcl 5-6 set ref 131 131* operator based structure level 1 dcl 5-6 p 000102 automatic pointer dcl 52 set ref 71* 72 74 75* 76* 76 79* 80 81* 82* 82 pl1_print$non_varying_nl 000050 constant entry external dcl 21 ref 38 39 46 122 pos 000046 internal static fixed bin(17,0) dcl 21 set ref 42* 46 46 112 113 116 118* 118 120 122 124* processed 24(25) based bit(1) level 2 packed unaligned dcl 1-5 set ref 89* 131 prologue 11 based pointer level 2 packed unaligned dcl 1-5 ref 71 pt 000100 automatic pointer dcl 52 in procedure "prt_block" set ref 54* 55 57 59 63 69* 71 79 89 91 93 93 93 pt parameter pointer dcl 19 in procedure "display_pl1_map" ref 17 44 ptx parameter pointer unaligned dcl 50 ref 48 54 67 69 q parameter pointer dcl 101 ref 99 105 106 108 129 129 131 131 131 root 3 based pointer level 2 packed unaligned dcl 3-9 set ref 129* 131 131 son 3 based pointer level 2 packed unaligned dcl 1-5 set ref 44* 91* source_id 0(09) based structure level 2 packed unaligned dcl 3-9 ref 108 start 10 based fixed bin(17,0) level 3 packed unaligned dcl 3-9 ref 105 statement based structure level 1 dcl 3-9 statement_type 12(27) based bit(9) level 2 packed unaligned dcl 3-9 ref 129 131 string builtin function dcl 30 ref 108 substr builtin function dcl 30 set ref 111 112* 112 113* 113 115 116* 116 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. allocate_statement internal static bit(9) initial dcl 4-3 assignment_statement internal static bit(9) initial dcl 4-3 call_statement internal static bit(9) initial dcl 4-3 close_statement internal static bit(9) initial dcl 4-3 continue_statement internal static bit(9) initial dcl 4-3 declare_statement internal static bit(9) initial dcl 4-3 default_statement internal static bit(9) initial dcl 4-3 delete_statement internal static bit(9) initial dcl 4-3 display_statement internal static bit(9) initial dcl 4-3 do_statement internal static bit(9) initial dcl 4-3 else_clause internal static bit(9) initial dcl 4-3 end_statement internal static bit(9) initial dcl 4-3 entry_statement internal static bit(9) initial dcl 4-3 exit_statement internal static bit(9) initial dcl 4-3 external_procedure internal static bit(9) initial dcl 2-1 format_statement internal static bit(9) initial dcl 4-3 free_statement internal static bit(9) initial dcl 4-3 get_statement internal static bit(9) initial dcl 4-3 goto_statement internal static bit(9) initial dcl 4-3 if_statement internal static bit(9) initial dcl 4-3 internal_procedure internal static bit(9) initial dcl 2-1 locate_statement internal static bit(9) initial dcl 4-3 lock_statement internal static bit(9) initial dcl 4-3 max_block_number internal static fixed bin(17,0) initial dcl 1-74 max_number_of_operands internal static fixed bin(15,0) initial dcl 5-15 n automatic fixed bin(17,0) dcl 21 null_statement internal static bit(9) initial dcl 4-3 open_statement internal static bit(9) initial dcl 4-3 p automatic pointer dcl 21 procedure_statement internal static bit(9) initial dcl 4-3 put_statement internal static bit(9) initial dcl 4-3 read_statement internal static bit(9) initial dcl 4-3 return_statement internal static bit(9) initial dcl 4-3 revert_statement internal static bit(9) initial dcl 4-3 rewrite_statement internal static bit(9) initial dcl 4-3 root_block internal static bit(9) initial dcl 2-1 signal_statement internal static bit(9) initial dcl 4-3 stop_statement internal static bit(9) initial dcl 4-3 system_on_unit internal static bit(9) initial dcl 4-3 unknown_statement internal static bit(9) initial dcl 4-3 unlock_statement internal static bit(9) initial dcl 4-3 wait_statement internal static bit(9) initial dcl 4-3 write_statement internal static bit(9) initial dcl 4-3 NAMES DECLARED BY EXPLICIT CONTEXT. db 000207 constant label dcl 59 ref 63 display_pl1_map 000053 constant entry external dcl 17 do_main 000260 constant label dcl 79 ref 72 l1 000240 constant label dcl 71 ref 65 no 000464 constant label dcl 129 ref 106 109 prt_block 000162 constant entry internal dcl 48 ref 44 59 91 93 prt_other_block 000224 constant entry internal dcl 67 ref 129 131 prt_statement 000327 constant entry internal dcl 99 ref 75 81 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 616 674 530 626 Length 1154 530 56 243 66 40 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_pl1_map 106 external procedure is an external procedure. prt_block 104 internal procedure calls itself recursively. prt_statement internal procedure shares stack frame of internal procedure prt_block. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 line display_pl1_map 000046 pos display_pl1_map 000047 old_id display_pl1_map STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME prt_block 000100 pt prt_block 000102 p prt_block 000112 bit_s_id prt_statement 000113 i prt_statement 000114 ln prt_statement THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. bindec binoct pl1_print$non_varying_nl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000050 38 000060 39 000075 41 000116 42 000122 43 000124 44 000125 46 000136 137 000160 48 000161 54 000167 55 000176 57 000202 59 000207 60 000217 63 000220 65 000222 67 000223 69 000231 71 000240 72 000242 74 000246 75 000252 76 000254 77 000257 79 000260 80 000263 81 000270 82 000272 83 000275 89 000276 91 000301 93 000310 97 000326 99 000327 105 000331 106 000336 108 000343 109 000346 111 000351 112 000355 113 000372 115 000407 116 000412 118 000431 120 000433 122 000436 123 000454 124 000460 127 000462 129 000464 131 000504 135 000522 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved