COMPILATION LISTING OF SEGMENT store_bit_address Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1703.6 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 /* procedure to set refa = addr(refb), possibly with bit offset */ 12 13 /* Modified: 12 June 1973 by RAB for EIS 14* Modified: 5 Sept 1975 by RAB to fix 1415 15* Modified: 10 Sept 1977 by RAB to fix 1613 by adding a_last_freed parameter */ 16 17 store_bit_address: proc(refa,refb,a_last_freed); 18 19 dcl (refa,refb) ptr; 20 dcl a_last_freed fixed bin(18); /* address at which temp storage used by refa was freed */ 21 22 dcl cg_stat$text_base ptr ext, 23 cg_stat$last_call fixed bin ext; 24 25 dcl (p,pa,pb) ptr, 26 n fixed bin(15), 27 shared bit(1) aligned, 28 b36 bit(36) aligned, 29 (i,units,bo) fixed bin; 30 31 dcl base_man$store_ptr_to entry(ptr,ptr); 32 dcl m_a entry(ptr,bit(2) aligned); 33 34 dcl (addr,addrel,bit,fixed,mod,null,substr) builtin; 35 36 37 dcl word bit(36) aligned based, 38 1 instruction aligned based, 39 2 base unal bit(3), 40 2 offset unal bit(15), 41 2 rest unal bit(18); 42 1 1 /* BEGIN INCLUDE FILE ... reference.incl.pl1 */ 1 2 1 3 dcl 1 reference based aligned, 1 4 2 node_type bit(9) unaligned, 1 5 2 array_ref bit(1) unaligned, 1 6 2 varying_ref bit(1) unaligned, 1 7 2 shared bit(1) unaligned, 1 8 2 put_data_sw bit(1) unaligned, 1 9 2 processed bit(1) unaligned, 1 10 2 units fixed(3) unaligned, 1 11 2 ref_count fixed(17) unaligned, 1 12 2 c_offset fixed(24), 1 13 2 c_length fixed(24), 1 14 2 symbol ptr unaligned, 1 15 2 qualifier ptr unaligned, 1 16 2 offset ptr unaligned, 1 17 2 length ptr unaligned, 1 18 2 subscript_list ptr unaligned, 1 19 /* these fields are used by the 645 code generator */ 1 20 2 address structure unaligned, 1 21 3 base bit(3), 1 22 3 offset bit(15), 1 23 3 op bit(9), 1 24 3 no_address bit(1), 1 25 3 inhibit bit(1), 1 26 3 ext_base bit(1), 1 27 3 tag bit(6), 1 28 2 info structure unaligned, 1 29 3 address_in structure, 1 30 4 b dimension(0:7) bit(1), 1 31 4 storage bit(1), 1 32 3 value_in structure, 1 33 4 a bit(1), 1 34 4 q bit(1), 1 35 4 aq bit(1), 1 36 4 string_aq bit(1), 1 37 4 complex_aq bit(1), 1 38 4 decimal_aq bit(1), 1 39 4 b dimension(0:7) bit(1), 1 40 4 storage bit(1), 1 41 4 indicators bit(1), 1 42 4 x dimension(0:7) bit(1), 1 43 3 other structure, 1 44 4 big_offset bit(1), 1 45 4 big_length bit(1), 1 46 4 modword_in_offset bit(1), 1 47 2 data_type fixed(5) unaligned, 1 48 2 bits structure unaligned, 1 49 3 padded_ref bit(1), 1 50 3 aligned_ref bit(1), 1 51 3 long_ref bit(1), 1 52 3 forward_ref bit(1), 1 53 3 ic_ref bit(1), 1 54 3 temp_ref bit(1), 1 55 3 defined_ref bit(1), 1 56 3 evaluated bit(1), 1 57 3 allocate bit(1), 1 58 3 allocated bit(1), 1 59 3 aliasable bit(1), 1 60 3 even bit(1), 1 61 3 perm_address bit(1), 1 62 3 aggregate bit(1), 1 63 3 hit_zero bit(1), 1 64 3 dont_save bit(1), 1 65 3 fo_in_qual bit(1), 1 66 3 hard_to_load bit(1), 1 67 2 relocation bit(12) unaligned, 1 68 2 more_bits structure unaligned, 1 69 3 substr bit(1), 1 70 3 padded_for_store_ref bit(1), 1 71 3 aligned_for_store_ref bit(1), 1 72 3 mbz bit(15), 1 73 2 store_ins bit(18) unaligned; 1 74 1 75 /* END INCLUDE FILE ... reference.incl.pl1 */ 43 2 1 dcl bases(0:7) bit(3) aligned int static init("000"b, "010"b, "100"b, "001"b, "011"b, "101"b, "111"b,"110"b) 2 2 options(constant); 2 3 2 4 dcl ( ap defined(bases(0)), 2 5 bp defined(bases(1)), 2 6 lp defined(bases(2)), 2 7 sp defined(bases(7))) bit(3) aligned; 2 8 2 9 dcl ( ab defined(bases(3)), 2 10 bb defined(bases(4)), 2 11 lb defined(bases(5)), 2 12 sb defined(bases(6))) bit(3) aligned; 2 13 2 14 dcl which_base(0:7) fixed bin int static init(0,3,1,4,2,5,7,6) options(constant); 44 45 46 pa = refa; 47 pb = refb; 48 49 /* check to see if this arg is a string expression which may end 50* in a stpbp instruction that saves a pointer to the string in a 51* temporary. If this is the case, we'll change the stpbp to set 52* the proper arg position in the stack and alter the address of 53* the temporary */ 54 55 if fixed(pb -> reference.store_ins,18) <= cg_stat$last_call then goto set; 56 57 if fixed(pb -> reference.store_ins,18) < a_last_freed then goto set; 58 59 p = addrel(cg_stat$text_base,pb -> reference.store_ins); 60 61 if (p -> word & "111000000000000000111111111111111111"b) 62 ^= "110000000000000000010101010001000000"b /* stpbp sp|0 */ 63 then goto set; 64 65 if pb -> address.base ^= bp 66 then if pb -> address.base ^= sp 67 then go to set1; 68 else if p -> instruction.offset ^= pb -> address.offset 69 then go to set1; 70 71 if pa -> reference.no_address 72 then do; 73 call m_a(pa,"0"b); 74 if pa -> address.base ^= sp 75 then go to set1; 76 if pa -> address.tag 77 then go to set1; 78 end; 79 80 p -> instruction.offset, pb -> address.offset = pa -> address.offset; 81 pb -> reference.store_ins = "0"b; 82 pb -> reference.ref_count = pb -> reference.ref_count - 1; 83 return; 84 85 /* Normal case: have base_man store the pointer */ 86 87 set: if pb -> reference.symbol ^= null 88 then if ^ pb -> reference.temp_ref | pb -> reference.length = null 89 then pb -> reference.no_address = "1"b; 90 91 set1: 92 call base_man$store_ptr_to(pb,pa); 93 94 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1009.4 store_bit_address.pl1 >spec>on>pl128d>store_bit_address.pl1 43 1 07/21/80 1546.3 reference.incl.pl1 >ldd>include>reference.incl.pl1 44 2 05/03/76 1320.8 bases.incl.pl1 >ldd>include>bases.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. a_last_freed parameter fixed bin(18,0) dcl 20 ref 17 57 addrel builtin function dcl 34 ref 59 address 10 based structure level 2 packed unaligned dcl 1-3 base 10 based bit(3) level 3 packed unaligned dcl 1-3 ref 65 65 74 base_man$store_ptr_to 000014 constant entry external dcl 31 ref 91 bases 000000 constant bit(3) initial array dcl 2-1 ref 65 65 65 65 74 74 bits 12(06) based structure level 2 packed unaligned dcl 1-3 bp defined bit(3) dcl 2-4 ref 65 cg_stat$last_call 000012 external static fixed bin(17,0) dcl 22 ref 55 cg_stat$text_base 000010 external static pointer dcl 22 ref 59 fixed builtin function dcl 34 ref 55 57 instruction based structure level 1 dcl 37 length 6 based pointer level 2 packed unaligned dcl 1-3 ref 87 m_a 000016 constant entry external dcl 32 ref 73 no_address 10(27) based bit(1) level 3 packed unaligned dcl 1-3 set ref 71 87* null builtin function dcl 34 ref 87 87 offset 0(03) based bit(15) level 2 in structure "instruction" packed unaligned dcl 37 in procedure "store_bit_address" set ref 68 80* offset 10(03) based bit(15) level 3 in structure "reference" packed unaligned dcl 1-3 in procedure "store_bit_address" set ref 68 80 80* p 000100 automatic pointer dcl 25 set ref 59* 61 68 80 pa 000102 automatic pointer dcl 25 set ref 46* 71 73* 74 76 80 91* pb 000104 automatic pointer dcl 25 set ref 47* 55 57 59 65 65 68 80 81 82 82 87 87 87 87 91* ref_count 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-3 set ref 82* 82 refa parameter pointer dcl 19 ref 17 46 refb parameter pointer dcl 19 ref 17 47 reference based structure level 1 dcl 1-3 sp defined bit(3) dcl 2-4 ref 65 74 store_ins 13(18) based bit(18) level 2 packed unaligned dcl 1-3 set ref 55 57 59 81* symbol 3 based pointer level 2 packed unaligned dcl 1-3 ref 87 tag 10(30) based bit(6) level 3 packed unaligned dcl 1-3 ref 76 temp_ref 12(11) based bit(1) level 3 packed unaligned dcl 1-3 ref 87 word based bit(36) dcl 37 ref 61 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ab defined bit(3) dcl 2-9 addr builtin function dcl 34 ap defined bit(3) dcl 2-4 b36 automatic bit(36) dcl 25 bb defined bit(3) dcl 2-9 bit builtin function dcl 34 bo automatic fixed bin(17,0) dcl 25 i automatic fixed bin(17,0) dcl 25 lb defined bit(3) dcl 2-9 lp defined bit(3) dcl 2-4 mod builtin function dcl 34 n automatic fixed bin(15,0) dcl 25 sb defined bit(3) dcl 2-9 shared automatic bit(1) dcl 25 substr builtin function dcl 34 units automatic fixed bin(17,0) dcl 25 which_base internal static fixed bin(17,0) initial array dcl 2-14 NAMES DECLARED BY EXPLICIT CONTEXT. set 000153 constant label dcl 87 ref 55 57 61 set1 000166 constant label dcl 91 ref 65 68 74 76 store_bit_address 000022 constant entry external dcl 17 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 264 304 201 274 Length 506 201 20 165 62 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME store_bit_address 78 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME store_bit_address 000100 p store_bit_address 000102 pa store_bit_address 000104 pb store_bit_address THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. base_man$store_ptr_to m_a THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_stat$last_call cg_stat$text_base LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000016 46 000027 47 000033 55 000036 57 000045 59 000047 61 000054 65 000060 68 000067 71 000100 73 000103 74 000115 76 000122 80 000125 81 000143 82 000145 83 000152 87 000153 91 000166 94 000177 ----------------------------------------------------------- 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