COMPILATION LISTING OF SEGMENT compile_entry Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/20/86 1204.1 mst Thu Options: optimize list 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 compile entry statements 12* 13* Initial Version: 31 March 1971 by BLW for Version II 14* Modified: 29 December 1972 by BLW 15* Modified: 23 June 1975 by EEW for new entry format 16* Modified: 25 September 1975 by RAB to remove labels in prev implementation 17* Modified: 17 May 1977 by RAB to check for reserved external name 18* Modified: 15 Feb 1978 by PCK to implement options(main) */ 19 20 compile_entry: proc(pt,pos); 21 22 dcl pt ptr, /* point at statement node */ 23 pos fixed bin(18); /* set to position of symbol_link info */ 24 25 dcl (cg_stat$text_base,cg_stat$def_base,cg_stat$validate_proc,cg_stat$cur_entry,cg_stat$desc_list_ptr, 26 cg_stat$entry_arg,cg_stat$cur_block,cg_stat$text_reloc_base, 27 cg_stat$cur_statement) ptr ext, 28 cg_stat$last_def bit(18) aligned ext, 29 cg_stat$support bit(1) aligned ext, 30 cg_stat$separate_static bit(1) ext, 31 cg_stat$text_pos fixed bin(18) ext; 32 33 dcl (p,ep,lp,cb,ent_pt,tree,q,pa,p1,q1,q2,q3,arg(2),desc_pt,desc_list_ptr,def_ptr) ptr, 34 bi_size fixed bin, 35 (gen_dummy, not_found) bit(1) aligned, 36 bit_image bit(bi_size) aligned based, 37 entry_type fixed bin(15), 38 (i,n,m,om,text_pos,ed) fixed bin(18); 39 40 dcl expmac$fill_usage entry(fixed bin(18),fixed bin(17)), 41 store entry(ptr), 42 expmac$many entry(fixed bin(15),ptr,fixed bin), 43 expmac$zero entry(fixed bin(15)), 44 base_man$update_base entry(fixed bin,ptr,fixed bin); 45 dcl base_man$load_arg entry(fixed bin,ptr) returns(bit(3) aligned); 46 dcl create_list entry(fixed bin(18)) returns(ptr), 47 get_variable entry(ptr) returns(ptr), 48 c_a entry(fixed bin,fixed bin) returns(ptr), 49 generate_definition entry(char(*) aligned,fixed bin(3),bit(18) aligned), 50 expmac entry(fixed bin(15),ptr), 51 error entry(fixed bin,ptr,ptr); 52 53 dcl (addr,addrel,bit,fixed,index,null,rel,size,substr) builtin; 54 55 dcl 1 reloc(0:3) aligned based, 56 2 skip1 unal bit(12), 57 2 left unal bit(6), 58 2 skip2 unal bit(12), 59 2 right unal bit(6); 60 61 dcl based_fixed fixed bin based; 62 63 dcl 1 text_desc_reloc aligned based, 64 2 number fixed bin (18) unsigned unaligned, 65 2 array (num_descs refer (text_desc_reloc.number)) unaligned, 66 3 skip bit(12), 67 3 reloc bit(6); 68 69 dcl 1 entry_info aligned based, 70 2 num_args unal bit(17), 71 2 skip unal bit(1), 72 2 filler unal bit(18), 73 2 symbol_link unal bit(18), 74 2 symbol_block unal bit(18); 75 76 dcl ( entry_macro init(196), 77 quick_entry_mac init(364), 78 ext_entry init(594), 79 ss_ext_entry init(646), 80 ss_op_offset init(198), 81 /* ldfx2 init(8), */ 82 /* pf_mac init(113), */ 83 /* quick_desc_mac init(279), */ 84 get_desc_size init(284), 85 support_mac init(305), 86 set_main_mac init(728), 87 nop_mac init(312)) fixed bin(15) int static options(constant); 88 1 1 /* BEGIN INCLUDE FILE definition.incl.pl1 */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 1 7* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 1 8* Modified to add indirect bit to definition flags. 1 9* END HISTORY COMMENTS */ 1 10 1 11 1 12 dcl 1 definition aligned based, 1 13 2 forward unal bit(18), /* offset of next def */ 1 14 2 backward unal bit(18), /* offset of previous def */ 1 15 2 value unal bit(18), 1 16 2 flags unal, 1 17 3 new bit(1), 1 18 3 ignore bit(1), 1 19 3 entry bit(1), 1 20 3 retain bit(1), 1 21 3 argcount bit(1), 1 22 3 descriptors bit(1), 1 23 3 indirect bit(1), 1 24 3 unused bit(8), 1 25 2 class unal bit(3), 1 26 2 symbol unal bit(18), /* offset of ACC for symbol */ 1 27 2 segname unal bit(18); /* offset of segname def */ 1 28 1 29 /* END INCLUDE FILE definition.incl.pl1 */ 89 2 1 /* BEGIN INCLUDE FILE ... block.incl.pl1 */ 2 2 /* Modified 22 Ocober 1980 by M. N. Davidoff to increase max block.number to 511 */ 2 3 /* format: style3,idind30 */ 2 4 2 5 declare 1 block aligned based, 2 6 2 node_type bit (9) unaligned, 2 7 2 source_id structure unaligned, 2 8 3 file_number bit (8), 2 9 3 line_number bit (14), 2 10 3 statement_number bit (5), 2 11 2 father ptr unaligned, 2 12 2 brother ptr unaligned, 2 13 2 son ptr unaligned, 2 14 2 declaration ptr unaligned, 2 15 2 end_declaration ptr unaligned, 2 16 2 default ptr unaligned, 2 17 2 end_default ptr unaligned, 2 18 2 context ptr unaligned, 2 19 2 prologue ptr unaligned, 2 20 2 end_prologue ptr unaligned, 2 21 2 main ptr unaligned, 2 22 2 end_main ptr unaligned, 2 23 2 return_values ptr unaligned, 2 24 2 return_count ptr unaligned, 2 25 2 plio_ps ptr unaligned, 2 26 2 plio_fa ptr unaligned, 2 27 2 plio_ffsb ptr unaligned, 2 28 2 plio_ssl ptr unaligned, 2 29 2 plio_fab2 ptr unaligned, 2 30 2 block_type bit (9) unaligned, 2 31 2 prefix bit (12) unaligned, 2 32 2 like_attribute bit (1) unaligned, 2 33 2 no_stack bit (1) unaligned, 2 34 2 get_data bit (1) unaligned, 2 35 2 flush_at_call bit (1) unaligned, 2 36 2 processed bit (1) unaligned, 2 37 2 text_displayed bit (1) unaligned, 2 38 2 number fixed bin (9) unsigned unaligned, 2 39 2 free_temps dimension (3) ptr, /* these fields are used by the code generator */ 2 40 2 temp_list ptr, 2 41 2 entry_list ptr, 2 42 2 o_and_s ptr, 2 43 2 why_nonquick aligned, 2 44 3 auto_adjustable_storage bit (1) unaligned, 2 45 3 returns_star_extents bit (1) unaligned, 2 46 3 stack_extended_by_args bit (1) unaligned, 2 47 3 invoked_by_format bit (1) unaligned, 2 48 3 format_statement bit (1) unaligned, 2 49 3 io_statements bit (1) unaligned, 2 50 3 assigned_to_entry_var bit (1) unaligned, 2 51 3 condition_statements bit (1) unaligned, 2 52 3 no_owner bit (1) unaligned, 2 53 3 recursive_call bit (1) unaligned, 2 54 3 options_non_quick bit (1) unaligned, 2 55 3 options_variable bit (1) unaligned, 2 56 3 never_referenced bit (1) unaligned, 2 57 3 pad_nonquick bit (5) unaligned, 2 58 2 prologue_flag bit (1) unaligned, 2 59 2 options_main bit (1) unaligned, 2 60 2 pad bit (16) unaligned, 2 61 2 number_of_entries fixed bin (17), 2 62 2 level fixed bin (17), 2 63 2 last_auto_loc fixed bin (17), 2 64 2 symbol_block fixed bin (17), 2 65 2 entry_info fixed bin (18), 2 66 2 enter structure unaligned, 2 67 3 start fixed bin (17), 2 68 3 end fixed bin (17), 2 69 2 leave structure unaligned, 2 70 3 start fixed bin (17), 2 71 3 end fixed bin (17), 2 72 2 owner ptr; 2 73 2 74 declare max_block_number fixed bin internal static options (constant) initial (511); 2 75 2 76 /* END INCLUDE FILE ... block.incl.pl1 */ 90 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 */ 91 4 1 /* BEGIN INCLUDE FILE ... list.incl.pl1 */ 4 2 4 3 /* Modified 26 June 81 by EBush to add max_list_elements */ 4 4 4 5 4 6 dcl 1 list based aligned, 4 7 2 node_type bit(9) unaligned, 4 8 2 reserved bit(12) unaligned, 4 9 2 number fixed(14) unaligned, 4 10 2 element dimension(n refer(list.number)) ptr unaligned; 4 11 4 12 dcl max_list_elements fixed bin(17) internal static options (constant) 4 13 init(16383); 4 14 4 15 /* END INCLUDE FILE ... list.incl.pl1 */ 92 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 */ 93 6 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 6 2 6 3 dcl 1 symbol based aligned, 6 4 2 node_type bit(9) unal, 6 5 2 source_id structure unal, 6 6 3 file_number bit(8), 6 7 3 line_number bit(14), 6 8 3 statement_number bit(5), 6 9 2 location fixed(18) unal unsigned, 6 10 2 allocated bit(1) unal, 6 11 2 dcl_type bit(3) unal, 6 12 2 reserved bit(6) unal, 6 13 2 pix unal, 6 14 3 pic_fixed bit(1) unal, 6 15 3 pic_float bit(1) unal, 6 16 3 pic_char bit(1) unal, 6 17 3 pic_scale fixed(7) unal, 6 18 3 pic_size fixed(7) unal, 6 19 2 level fixed(8) unal, 6 20 2 boundary fixed(3) unal, 6 21 2 size_units fixed(3) unal, 6 22 2 scale fixed(7) unal, 6 23 2 runtime bit(18) unal, 6 24 2 runtime_offset bit(18) unal, 6 25 2 block_node ptr unal, 6 26 2 token ptr unal, 6 27 2 next ptr unal, 6 28 2 multi_use ptr unal, 6 29 2 cross_references ptr unal, 6 30 2 initial ptr unal, 6 31 2 array ptr unal, 6 32 2 descriptor ptr unal, 6 33 2 equivalence ptr unal, 6 34 2 reference ptr unal, 6 35 2 general ptr unal, 6 36 2 father ptr unal, 6 37 2 brother ptr unal, 6 38 2 son ptr unal, 6 39 2 word_size ptr unal, 6 40 2 bit_size ptr unal, 6 41 2 dcl_size ptr unal, 6 42 2 symtab_size ptr unal, 6 43 2 c_word_size fixed(24), 6 44 2 c_bit_size fixed(24), 6 45 2 c_dcl_size fixed(24), 6 46 6 47 2 attributes structure aligned, 6 48 3 data_type structure unal, 6 49 4 structure bit(1) , 6 50 4 fixed bit(1), 6 51 4 float bit(1), 6 52 4 bit bit(1), 6 53 4 char bit(1), 6 54 4 ptr bit(1), 6 55 4 offset bit(1), 6 56 4 area bit(1), 6 57 4 label bit(1), 6 58 4 entry bit(1), 6 59 4 file bit(1), 6 60 4 arg_descriptor bit(1), 6 61 4 storage_block bit(1), 6 62 4 explicit_packed bit(1), /* options(packed) */ 6 63 4 condition bit(1), 6 64 4 format bit(1), 6 65 4 builtin bit(1), 6 66 4 generic bit(1), 6 67 4 picture bit(1), 6 68 6 69 3 misc_attributes structure unal, 6 70 4 dimensioned bit(1), 6 71 4 initialed bit(1), 6 72 4 aligned bit(1), 6 73 4 unaligned bit(1), 6 74 4 signed bit(1), 6 75 4 unsigned bit(1), 6 76 4 precision bit(1), 6 77 4 varying bit(1), 6 78 4 local bit(1), 6 79 4 decimal bit(1), 6 80 4 binary bit(1), 6 81 4 real bit(1), 6 82 4 complex bit(1), 6 83 4 variable bit(1), 6 84 4 reducible bit(1), 6 85 4 irreducible bit(1), 6 86 4 returns bit(1), 6 87 4 position bit(1), 6 88 4 internal bit(1), 6 89 4 external bit(1), 6 90 4 like bit(1), 6 91 4 member bit(1), 6 92 4 non_varying bit(1), 6 93 4 options bit(1), 6 94 4 variable_arg_list bit(1), /* options(variable) */ 6 95 4 alloc_in_text bit(1), /* options(constant) */ 6 96 6 97 3 storage_class structure unal, 6 98 4 auto bit(1), 6 99 4 based bit(1), 6 100 4 static bit(1), 6 101 4 controlled bit(1), 6 102 4 defined bit(1), 6 103 4 parameter bit(1), 6 104 4 param_desc bit(1), 6 105 4 constant bit(1), 6 106 4 temporary bit(1), 6 107 4 return_value bit(1), 6 108 6 109 3 file_attributes structure unal, 6 110 4 print bit(1), 6 111 4 input bit(1), 6 112 4 output bit(1), 6 113 4 update bit(1), 6 114 4 stream bit(1), 6 115 4 reserved_1 bit(1), 6 116 4 record bit(1), 6 117 4 sequential bit(1), 6 118 4 direct bit(1), 6 119 4 interactive bit(1), /* env(interactive) */ 6 120 4 reserved_2 bit(1), 6 121 4 reserved_3 bit(1), 6 122 4 stringvalue bit(1), /* env(stringvalue) */ 6 123 4 keyed bit(1), 6 124 4 reserved_4 bit(1), 6 125 4 environment bit(1), 6 126 6 127 3 compiler_developed structure unal, 6 128 4 aliasable bit(1), 6 129 4 packed bit(1), 6 130 4 passed_as_arg bit(1), 6 131 4 allocate bit(1), 6 132 4 set bit(1), 6 133 4 exp_extents bit(1), 6 134 4 refer_extents bit(1), 6 135 4 star_extents bit(1), 6 136 4 isub bit(1), 6 137 4 put_in_symtab bit(1), 6 138 4 contiguous bit(1), 6 139 4 put_data bit(1), 6 140 4 overlayed bit(1), 6 141 4 error bit(1), 6 142 4 symtab_processed bit(1), 6 143 4 overlayed_by_builtin bit(1), 6 144 4 defaulted bit(1), 6 145 4 connected bit(1); 6 146 6 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 94 7 1 /* BEGIN INCLUDE FILE ... token.incl.pl1 */ 7 2 7 3 dcl 1 token based aligned, 7 4 2 node_type bit(9) unaligned, 7 5 2 type bit(9) unaligned, 7 6 2 loc bit(18) unaligned, /* symtab offset for identifiers, "p" flag for constants */ 7 7 2 declaration ptr unaligned, 7 8 2 next ptr unaligned, 7 9 2 size fixed(9), 7 10 2 string char(n refer(token.size)); 7 11 7 12 /* END INCLUDE FILE ... token.incl.pl1 */ 95 8 1 /* BEGIN INCLUDE FILE ... reference.incl.pl1 */ 8 2 8 3 dcl 1 reference based aligned, 8 4 2 node_type bit(9) unaligned, 8 5 2 array_ref bit(1) unaligned, 8 6 2 varying_ref bit(1) unaligned, 8 7 2 shared bit(1) unaligned, 8 8 2 put_data_sw bit(1) unaligned, 8 9 2 processed bit(1) unaligned, 8 10 2 units fixed(3) unaligned, 8 11 2 ref_count fixed(17) unaligned, 8 12 2 c_offset fixed(24), 8 13 2 c_length fixed(24), 8 14 2 symbol ptr unaligned, 8 15 2 qualifier ptr unaligned, 8 16 2 offset ptr unaligned, 8 17 2 length ptr unaligned, 8 18 2 subscript_list ptr unaligned, 8 19 /* these fields are used by the 645 code generator */ 8 20 2 address structure unaligned, 8 21 3 base bit(3), 8 22 3 offset bit(15), 8 23 3 op bit(9), 8 24 3 no_address bit(1), 8 25 3 inhibit bit(1), 8 26 3 ext_base bit(1), 8 27 3 tag bit(6), 8 28 2 info structure unaligned, 8 29 3 address_in structure, 8 30 4 b dimension(0:7) bit(1), 8 31 4 storage bit(1), 8 32 3 value_in structure, 8 33 4 a bit(1), 8 34 4 q bit(1), 8 35 4 aq bit(1), 8 36 4 string_aq bit(1), 8 37 4 complex_aq bit(1), 8 38 4 decimal_aq bit(1), 8 39 4 b dimension(0:7) bit(1), 8 40 4 storage bit(1), 8 41 4 indicators bit(1), 8 42 4 x dimension(0:7) bit(1), 8 43 3 other structure, 8 44 4 big_offset bit(1), 8 45 4 big_length bit(1), 8 46 4 modword_in_offset bit(1), 8 47 2 data_type fixed(5) unaligned, 8 48 2 bits structure unaligned, 8 49 3 padded_ref bit(1), 8 50 3 aligned_ref bit(1), 8 51 3 long_ref bit(1), 8 52 3 forward_ref bit(1), 8 53 3 ic_ref bit(1), 8 54 3 temp_ref bit(1), 8 55 3 defined_ref bit(1), 8 56 3 evaluated bit(1), 8 57 3 allocate bit(1), 8 58 3 allocated bit(1), 8 59 3 aliasable bit(1), 8 60 3 even bit(1), 8 61 3 perm_address bit(1), 8 62 3 aggregate bit(1), 8 63 3 hit_zero bit(1), 8 64 3 dont_save bit(1), 8 65 3 fo_in_qual bit(1), 8 66 3 hard_to_load bit(1), 8 67 2 relocation bit(12) unaligned, 8 68 2 more_bits structure unaligned, 8 69 3 substr bit(1), 8 70 3 padded_for_store_ref bit(1), 8 71 3 aligned_for_store_ref bit(1), 8 72 3 mbz bit(15), 8 73 2 store_ins bit(18) unaligned; 8 74 8 75 /* END INCLUDE FILE ... reference.incl.pl1 */ 96 9 1 /* BEGIN INCLUDE FILE ... nodes.incl.pl1 */ 9 2 9 3 /* Modified: 26 Dec 1979 by PCK to implement by name assignment */ 9 4 9 5 dcl ( block_node initial("000000001"b), 9 6 statement_node initial("000000010"b), 9 7 operator_node initial("000000011"b), 9 8 reference_node initial("000000100"b), 9 9 token_node initial("000000101"b), 9 10 symbol_node initial("000000110"b), 9 11 context_node initial("000000111"b), 9 12 array_node initial("000001000"b), 9 13 bound_node initial("000001001"b), 9 14 format_value_node initial("000001010"b), 9 15 list_node initial("000001011"b), 9 16 default_node initial("000001100"b), 9 17 machine_state_node initial("000001101"b), 9 18 source_node initial("000001110"b), 9 19 label_node initial("000001111"b), 9 20 cross_reference_node initial("000010000"b), 9 21 sf_par_node initial("000010001"b), 9 22 temporary_node initial("000010010"b), 9 23 label_array_element_node initial("000010011"b), 9 24 by_name_agg_node initial("000010100"b)) 9 25 bit(9) internal static aligned options(constant); 9 26 9 27 dcl 1 node based aligned, 9 28 2 type unal bit(9), 9 29 2 source_id unal structure, 9 30 3 file_number bit(8), 9 31 3 line_number bit(14), 9 32 3 statement_number bit(5); 9 33 9 34 /* END INCLUDE FILE ... nodes.incl.pl1 */ 97 10 1 /* BEGIN INCLUDE FILE relocation_bits.incl.pl1 */ 10 2 10 3 /* This include file defines the relocation bits as bit (6) entities. See 10 4* also relbts.incl.pl1 and reloc_lower.incl.pl1. */ 10 5 10 6 dcl ( rc_a initial("000000"b), /* absolute */ 10 7 rc_t initial("010000"b), /* text */ 10 8 rc_nt initial("010001"b), /* negative text */ 10 9 rc_lp18 initial("010010"b), /* linkage, 18 bit */ 10 10 rc_nlp18 initial("010011"b), /* negative link, 18 bit */ 10 11 rc_lp15 initial("010100"b), /* linkage, 15 bit */ 10 12 rc_dp initial("010101"b), /* def section */ 10 13 rc_s initial("010110"b), /* symbol segment */ 10 14 rc_ns initial("010111"b), /* negative symbol */ 10 15 rc_is18 initial("011000"b), /* internal static 18 */ 10 16 rc_is15 initial("011001"b), /* internal static 15 */ 10 17 rc_lb initial("011000"b), /* link block */ 10 18 rc_nlb initial("011001"b), /* negative link block */ 10 19 rc_sr initial("011010"b), /* self relative */ 10 20 rc_e initial("011111"b)) /* escape */ 10 21 bit(6) int static options(constant); 10 22 10 23 /* END INCLUDE FILE relocation_bits.incl.pl1 */ 98 11 1 /* BEGIN INCLUDE FILE ... op_codes.incl.pl1 */ 11 2 11 3 /* Modified: 25 Apr 1979 by PCK 4-bit decimal */ 11 4 /* Modified: 6 Jun 1979 by PG to add rank and byte */ 11 5 /* Modified: 26 Dec 1979 by PCK to add assign_by_name */ 11 6 /* Modified: 26 July 82 BIM wordno, segno */ 11 7 11 8 dcl ( add initial("000010001"b), /* opnd(1) <- opnd(2)+opnd(3) */ 11 9 sub initial("000010010"b), /* opnd(1) <- opnd(2)-opnd(3) */ 11 10 mult initial("000010011"b), /* opnd(1) <- opnd(2)*opnd(3) */ 11 11 div initial("000010100"b), /* opnd(1) <- opnd(2)/opnd(3) */ 11 12 negate initial("000010101"b), /* opnd(1) <- -opnd(2) */ 11 13 exp initial("000010110"b), /* opnd(1) <- opnd(2) ** opnd(3) */ 11 14 11 15 and_bits initial("000100001"b), /* opnd(1) <- opnd(2) & opnd(3) */ 11 16 or_bits initial("000100010"b), /* opnd(1) <- opnd(2)|opnd(3) */ 11 17 xor_bits initial("000100011"b), /* opnd(1) <- opnd(2) xor opnd(3) */ 11 18 not_bits initial("000100100"b), /* opnd(1) <- ^opnd(2) */ 11 19 cat_string initial("000100101"b), /* opnd(1) <- opnd(2)||opnd(3) */ 11 20 bool_fun initial("000100110"b), /* opnd(1) <- bool(opnd(2),opnd(3),opnd(4)) */ 11 21 11 22 assign initial("000110001"b), /* opnd(1) <- opnd(2) */ 11 23 assign_size_ck initial("000110010"b), /* opnd(1) <- opnd(2) */ 11 24 assign_zero initial("000110011"b), /* opnd(1) <- 0 */ 11 25 copy_words initial("000110100"b), /* move opnd(2) to opnd(1) by opnd(3) words */ 11 26 copy_string initial("000110101"b), /* move opnd(2) to opnd(1) by opnd(3) units */ 11 27 make_desc initial("000110110"b), /* opnd(1) <- descriptor(opnd(2),opnd(3)) */ 11 28 assign_round initial("000110111"b), /* opnd(1) <- opnd(2) rounded */ 11 29 pack initial("000111000"b), /* opnd(1) <- encode to picture opnd(2) */ 11 30 unpack initial("000111001"b), /* opnd(1) <- decode from picture opnd(2) */ 11 31 11 32 less_than initial("001000100"b), /* opnd(1) <- opnd(2) < opnd(3) */ 11 33 greater_than initial("001000101"b), /* opnd(1) <- opnd(2) > opnd(3) */ 11 34 equal initial("001000110"b), /* opnd(1) <- opnd(2) = opnd(3) */ 11 35 not_equal initial("001000111"b), /* opnd(1) <- opnd(2) ^= opnd(3) */ 11 36 less_or_equal initial("001001000"b), /* opnd(1) <- opnd(2) <= opnd(3) */ 11 37 greater_or_equal initial("001001001"b), /* opnd(1) <- opnd(2) >= opnd(3) */ 11 38 11 39 jump initial("001010001"b), /* go to opnd(1) unconditionally */ 11 40 jump_true initial("001010010"b), /* go to opnd(1) if opnd(2) is not 0 */ 11 41 jump_false initial("001010011"b), /* go to opnd(1) if opnd(2) is all 0 */ 11 42 jump_if_lt initial("001010100"b), /* go to opnd(1) if opnd(2) < opnd(3) */ 11 43 jump_if_gt initial("001010101"b), /* go to opnd(1) if opnd(2) > opnd(3) */ 11 44 jump_if_eq initial("001010110"b), /* go to opnd(1) if opnd(2) = opnd(3) */ 11 45 jump_if_ne initial("001010111"b), /* go to opnd(1) if opnd(2) ^= opnd(3) */ 11 46 jump_if_le initial("001011000"b), /* go to opnd(1) if opnd(2) <= opnd(3) */ 11 47 jump_if_ge initial("001011001"b), /* go to opnd(1) if opnd(2) >= opnd(3) */ 11 48 11 49 std_arg_list initial("001100001"b), /* opnd(1) <- arglist(opnd(2) desclist(opnd(3))) */ 11 50 return_words initial("001100010"b), /* return aggregate opnd(1), opnd(2) is length in words */ 11 51 std_call initial("001100011"b), /* opnd(1) <- call opnd(2) with opnd(3) */ 11 52 return_bits initial("001100100"b), /* return aggregate opnd(1), opnd(2) is length in bits */ 11 53 std_entry initial("001100101"b), /* entry(opnd(1)... opnd(n)) */ 11 54 return_string initial("001100110"b), /* return string opnd(1) */ 11 55 ex_prologue initial("001100111"b), /* execute the prologue -no operands- */ 11 56 allot_auto initial("001101000"b), /* opnd(1) <- addrel(stack,opnd(2)) */ 11 57 param_ptr initial("001101001"b), /* opnd(1) <- ptr to opnd(2) in block opnd(3) */ 11 58 param_desc_ptr initial("001101010"b), /* opnd(1) <- ptr to opnd(2) in block opnd(3) */ 11 59 std_return initial("001101011"b), /* return -no arguments- */ 11 60 allot_ctl initial("001101100"b), /* allocate opnd(1) , length in words is opnd(2) */ 11 61 free_ctl initial("001101101"b), /* free opnd(1) */ 11 62 stop initial("001101110"b), /* stop - terminate run unit */ 11 63 11 64 mod_bit initial("001110000"b), /* opnd(1) <- mod(opnd(3),36), 11 65* opnd(2) <- opnd(3) / 36 */ 11 66 mod_byte initial("001110001"b), /* opnd(1) <- mod(opnd(3),4), 11 67* opnd(2) <- opnd(3) / 4 */ 11 68 mod_half initial("001110010"b), /* opnd(1) <- mod(opnd(3),2), 11 69* opnd(2) <- opnd(3) / 2 */ 11 70 mod_word initial("001110011"b), /* TO BE DEFINED BY BLW */ 11 71 11 72 bit_to_char initial("010000000"b), /* opnd(1) <- (opnd(2)+8)/9 */ 11 73 bit_to_word initial("010000001"b), /* opnd(1) <- (opnd(2)+35)/36 */ 11 74 char_to_word initial("010000010"b), /* opnd(1) <- (opnd(2)+3)/4 */ 11 75 half_to_word initial("010000011"b), /* opnd(1) <- (opnd(2)+1)/2 */ 11 76 word_to_mod2 initial("010000100"b), /* opnd(1) <- (opnd(2)+1)/2*2 */ 11 77 word_to_mod4 initial("010000101"b), /* opnd(1) <- (opnd(2)+3)/4*4 */ 11 78 word_to_mod8 initial("010000110"b), /* opnd(1) <- (opnd(2)+7)/8*8 */ 11 79 rel_fun initial("010000111"b), /* opnd(1) <- rel(opnd(2)) */ 11 80 baseno_fun initial("010001000"b), /* opnd(1) <- baseno(opnd(2)) */ 11 81 desc_size initial("010001001"b), /* opnd(1) <- substr(opnd(2),13,24) */ 11 82 bit_pointer initial("010001010"b), /* opnd(1) <- bit offset of opnd(2) */ 11 83 index_before_fun initial("010001011"b), /* opnd(1) <- length of before(opnd(2),opnd(3)) */ 11 84 index_after_fun initial("010001100"b), /* opnd(1) <- offset of after(opnd(2),opnd(3)) in opnd(2) */ 11 85 verify_ltrim_fun initial("010001101"b), /* opnd(1) <- offset of ltrim(opnd(2),opnd(3)) in opnd(2) */ 11 86 verify_rtrim_fun initial("010001110"b), /* opnd(1) <- length(opnd(2))-length(rtrim(opnd(2),opnd(3))) */ 11 87 digit_to_bit initial("010001111"b), /* opnd(1) <- 9*opnd(2)/2 */ 11 88 11 89 ceil_fun initial("010010000"b), /* opnd(1) <- ceil(opnd(2)) */ 11 90 floor_fun initial("010010001"b), /* opnd(1) <- floor(opnd(2)) */ 11 91 round_fun initial("010010010"b), /* opnd(1) <- round(opnd(2)) */ 11 92 sign_fun initial("010010011"b), /* opnd(1) <- sign(opnd(2)) */ 11 93 abs_fun initial("010010100"b), /* opnd(1) <- abs(opnd(2)) */ 11 94 trunc_fun initial("010010101"b), /* opnd(1) <- trunc(opnd(2)) */ 11 95 byte_fun initial("010010110"b), /* opnd(1) <- byte(opnd(2)) */ 11 96 rank_fun initial("010010111"b), /* opnd(1) <- rank(opnd(2)) */ 11 97 index_rev_fun initial("010011000"b), /* opnd(1) <- index(reverse(opnd(2)),reverse(opnd(3))) */ 11 98 search_rev_fun initial("010011001"b), /* opnd(1) <- search(reverse(opnd(2)),opnd(3)) */ 11 99 verify_rev_fun initial("010011010"b), /* opnd(1) <- verify(reverse(opnd(2)),opnd(3)) */ 11 100 wordno_fun initial("010011011"b), /* opnd(1) <- wordno (opnd(2)) */ 11 101 segno_fun initial("010011100"b), /* opnd(1) <- segno (opnd(2)) */ 11 102 bitno_fun initial("010011101"b), /* opnd(1) <- bitno (opnd(2)) */ 11 103 charno_fun initial("010011110"b), /* opnd(1) <- charno (opnd(2)) */ 11 104 11 105 index_fun initial("010100000"b), /* opnd(1) <- index(opnd(2),opnd(3)) */ 11 106 off_fun initial("010100001"b), /* opnd(1) <- offset(opnd(2),opnd(3)) */ 11 107 complex_fun initial("010100010"b), /* opnd(1) <- complex(opnd(2),opnd(3)) */ 11 108 conjg_fun initial("010100011"b), /* opnd(1) <- conjg(opnd(2),opnd(3)) */ 11 109 mod_fun initial("010100100"b), /* opnd(1) <- mod(opnd(2),opnd(3)) */ 11 110 repeat_fun initial("010100101"b), /* opnd(1) <- repeat(opnd(2),opnd(3)) */ 11 111 verify_fun initial("010100110"b), /* opnd(1) <- verify(opnd(2),opnd(3)) */ 11 112 translate_fun initial("010100111"b), /* opnd(1) <- translate(opnd(2),opnd(3))*/ 11 113 real_fun initial("010101001"b), /* opnd(1) <- real(opnd(2)) */ 11 114 imag_fun initial("010101010"b), /* opnd(1) <- imag(opnd(2)) */ 11 115 length_fun initial("010101011"b), /* opnd(1) <- length(opnd(2)) */ 11 116 pl1_mod_fun initial("010101100"b), /* opnd(1) <- mod(opnd(2)) */ 11 117 search_fun initial("010101101"b), /* opnd(1) <- search(opnd(2),opnd(3)) */ 11 118 allocation_fun initial("010101110"b), /* opnd(1) <- allocation(opnd(2)) */ 11 119 reverse_fun initial("010101111"b), /* opnd(1) <- reverse(opnd(2)) */ 11 120 11 121 addr_fun initial("010110000"b), /* opnd(1) <- addr(opnd(2)) */ 11 122 addr_fun_bits initial("010110001"b), /* opnd(1) <- addr(opnd(2)) */ 11 123 ptr_fun initial("010110010"b), /* opnd(1) <- ptr(opnd(2),opnd(3)) */ 11 124 baseptr_fun initial("010110011"b), /* opnd(1) <- baseptr(opnd(2)) */ 11 125 addrel_fun initial("010110100"b), /* opnd(1) <- addrel(opnd(2),opnd(3)) */ 11 126 codeptr_fun initial("010110101"b), /* opnd(1) <- codeptr(opnd(2)) */ 11 127 environmentptr_fun initial("010110110"b), /* opnd(1) <- environmentptr(opnd(2)) */ 11 128 stackbaseptr_fun initial("010110111"b), /* opnd(1) is ptr to base of current stack */ 11 129 stackframeptr_fun initial("010111000"b), /* opnd(1) is ptr to current block's stack frame */ 11 130 setcharno_fun initial("010111001"b), /* opnd(1) <- opnd(2) with charno opnd(3) */ 11 131 addcharno_fun initial("010111010"b), /* opnd(1) <- opnd(2) with charno = charno + opnd(3) */ 11 132 setbitno_fun initial("010111011"b), /* setcharno for bitsno */ 11 133 addbitno_fun initial("010111100"b), /* addcharno for bitno */ 11 134 11 135 min_fun initial("011000000"b), /* opnd(1) <- min(opnd(1),opnd(2),...) */ 11 136 max_fun initial("011000001"b), /* opnd(1) <- max(opnd(1),opnd(2),...) */ 11 137 11 138 stack_ptr initial("011010001"b), /* opnd(1) <- stack frame ptr */ 11 139 empty_area initial("011010010"b), /* empty opnd(1), length in words is opnd(2) */ 11 140 enable_on initial("011010100"b), /* opnd(1) is the cond name 11 141* opnd(2) is the file name 11 142* opnd(3) is the block */ 11 143 revert_on initial("011010101"b), /* opnd(1) is the cond name, 11 144* opnd(2) is the file name */ 11 145 signal_on initial("011010110"b), /* opnd(1) is the cond name 11 146* opnd(2) is the file name */ 11 147 11 148 lock_fun initial("011010111"b), /* opnd(1) <- stac(opnd(2),opnd(3)) */ 11 149 stacq_fun initial("011011000"b), /* opnd(1) is result, opnd(2) is ptr to lock word, 11 150* opnd(3) is old value, (4) is new value. */ 11 151 clock_fun initial("011011001"b), /* opnd(1) is the clock time */ 11 152 vclock_fun initial("011011010"b), /* opnd(1) is the virtual clock time */ 11 153 11 154 bound_ck initial("011100000"b), /* opnd(1) <- opnd(2) if opnd(3) <= opnd(2) <= opnd(4) */ 11 155 range_ck initial("011100001"b), /* opnd(1) <- opnd(2) if opnd(3) <= opnd(2) <= opnd(4) */ 11 156 loop initial("011100010"b), /* do opnd(1) for opnd(2) from opnd(3) to opnd(4) by 1, 11 157* opnd(5) is the list */ 11 158 join initial("011100011"b), /* do opnd(1), opnd(2) ... opnd(n) */ 11 159 allot_based initial("011100100"b), /* allocate opnd(2) words in opnd(3), set opnd(1) */ 11 160 free_based initial("011100101"b), /* free opnd(1) in opnd(3), length is opnd(2) words */ 11 161 11 162 r_parn initial("011110001"b), /* format op code */ 11 163 l_parn initial("011110010"b), 11 164 r_format initial("011110011"b), 11 165 c_format initial("011110100"b), 11 166 f_format initial("011110101"b), 11 167 e_format initial("011110110"b), 11 168 b_format initial("011110111"b), 11 169 a_format initial("011111000"b), 11 170 x_format initial("011111001"b), 11 171 skip_format initial("011111010"b), 11 172 column_format initial("011111011"b), 11 173 page_format initial("011111100"b), 11 174 line_format initial("011111101"b), 11 175 picture_format initial("011111110"b), 11 176 bn_format initial("011111111"b), /* bit format, length(opnd(2)), radix factor(opnd(3)) */ 11 177 11 178 get_list_trans initial("100000000"b), /* getlist(opnd(2) with desc(opnd(1))) */ 11 179 get_edit_trans initial("100000001"b), /* getedit(opnd(2) with desc(opnd(1))) */ 11 180 get_data_trans initial("100000010"b), /* getdata(opnd(1) to opnd(n)) */ 11 181 put_list_trans initial("100000011"b), /* putlist(opnd(2) with desc(opnd(1))) */ 11 182 put_edit_trans initial("100000100"b), /* putedit(opnd(2) with desc(opnd(1))) */ 11 183 put_data_trans initial("100000101"b), /* putdata(opnd(2)) with subscript-list opnd(1) */ 11 184 terminate_trans initial("100000110"b), /* terminate stream transmission */ 11 185 stream_prep initial("100000111"b), /* initiate stream transmission */ 11 186 record_io initial("100001000"b), /* perform record io operation */ 11 187 fortran_read initial("100001001"b), /* A complete read statement */ 11 188 fortran_write initial("100001010"b), /* A complete write statement */ 11 189 ftn_file_manip initial("100001011"b), /* endfile,backspace,rewind,etc. */ 11 190 ftn_trans_loop initial("100001100"b), /* An implied do in i/o list */ 11 191 put_control initial("100001101"b), /* put control opnd(1) opnd(2) times */ 11 192 put_field initial("100001110"b), /* putlist(opnd(2)) of length(opnd(1)) */ 11 193 put_field_chk initial("100001111"b), /* putlist(op(2)) of len(op(1)) check char index(op(3)) */ 11 194 11 195 /* These operators are produced by the parse but are not used as input to the code generator. */ 11 196 /* They are processed by the semantic translator. */ 11 197 11 198 return_value initial("100010010"b), /* return(opnd(1)) */ 11 199 allot_var initial("100010011"b), /* allot opnd(1) in opnd(2) */ 11 200 free_var initial("100010100"b), /* free opnd(1) out of opnd(2) */ 11 201 get_file initial("100010101"b), /* opnd(1) is filename,opnd(2) is copy */ 11 202 /* opnd(3) is skip, opnd(4) is list */ 11 203 get_string initial("100010110"b), /* opnd(1) is string,opnd(2) is list */ 11 204 put_file initial("100010111"b), /* opnd(1) is filename,opnd(2) is page */ 11 205 /* opnd(3) is skip,opnd(4) is line */ 11 206 put_string initial("100011000"b), /* opnd(1) is string,opnd(2) is list */ 11 207 open_file initial("100011001"b), 11 208 close_file initial("100011010"b), 11 209 read_file initial("100011011"b), 11 210 write_file initial("100011100"b), 11 211 locate_file initial("100011101"b), 11 212 do_fun initial("100011110"b), /* opnd(1) is join of a list */ 11 213 /* opnd(2) is control variable ref */ 11 214 /* opnd(3) is specification operator */ 11 215 do_spec initial("100011111"b), /* opnd(1) to opnd(2) by opnd(3) */ 11 216 /* repeat opnd(4) while opnd(5) */ 11 217 /* opnd(6) is next specification */ 11 218 11 219 rewrite_file initial("100100000"b), 11 220 delete_file initial("100100001"b), 11 221 unlock_file initial("100100010"b), 11 222 lock_file initial("100100011"b), 11 223 refer initial("100100101"b), /* opnd(1) refer(opnd(2)) */ 11 224 prefix_plus initial("100100110"b), /* opnd(1) <- +opnd(2) */ 11 225 nop initial("100100111"b), /* no-op */ 11 226 assign_by_name initial("100101000"b), /* opnd(1) <- opnd(2),by name */ 11 227 11 228 /* These operators are produced by the semantic translator in processing the math 11 229* builtin functions and are used as input to the code generator */ 11 230 11 231 sqrt_fun initial("100110000"b), /* opnd(1) <- sqrt(opnd(2)) */ 11 232 sin_fun initial("100110001"b), /* opnd(1) <- sin(opnd(2)) */ 11 233 sind_fun initial("100110010"b), /* opnd(1) <- sind(opnd(2)) */ 11 234 cos_fun initial("100110011"b), /* opnd(1) <- cos(opnd(2)) */ 11 235 cosd_fun initial("100110100"b), /* opnd(1) <- cosd(opnd(2)) */ 11 236 tan_fun initial("100110101"b), /* opnd(1) <- tan(opnd(2)) */ 11 237 tand_fun initial("100110110"b), /* opnd(1) <- tand(opnd(2)) */ 11 238 asin_fun initial("100110111"b), /* opnd(1) <- asin(opnd(2)) */ 11 239 asind_fun initial("100111000"b), /* opnd(1) <- asind(opnd(2)) */ 11 240 acos_fun initial("100111001"b), /* opnd(1) <- acos(opnd(2)) */ 11 241 acosd_fun initial("100111010"b), /* opnd(1) <- acosd(opnd(2)) */ 11 242 atan_fun initial("100111011"b), /* opnd(1) <- atan(opnd(2)[,opnd(3)]) */ 11 243 atand_fun initial("100111100"b), /* opnd(1) <- atand(opnd(2)[,opnd(3)]) */ 11 244 log2_fun initial("100111101"b), /* opnd(1) <- log2(opnd(2)) */ 11 245 log_fun initial("100111110"b), /* opnd(1) <- log(opnd(2)) */ 11 246 log10_fun initial("100111111"b), /* opnd(1) <- log10(opnd(2)) */ 11 247 11 248 exp_fun initial("101000000"b)) /* opnd(1) <- exp(opnd(2)) */ 11 249 11 250 bit(9) aligned internal static options(constant); 11 251 11 252 /* END INCLUDE FILE ... op_codes.incl.pl1 */ 99 12 1 /* statement types */ 12 2 12 3 dcl ( unknown_statement initial("000000000"b), 12 4 allocate_statement initial("000000001"b), 12 5 assignment_statement initial("000000010"b), 12 6 begin_statement initial("000000011"b), 12 7 call_statement initial("000000100"b), 12 8 close_statement initial("000000101"b), 12 9 declare_statement initial("000000110"b), 12 10 lock_statement initial("000000111"b), 12 11 delete_statement initial("000001000"b), 12 12 display_statement initial("000001001"b), 12 13 do_statement initial("000001010"b), 12 14 else_clause initial("000001011"b), 12 15 end_statement initial("000001100"b), 12 16 entry_statement initial("000001101"b), 12 17 exit_statement initial("000001110"b), 12 18 format_statement initial("000001111"b), 12 19 free_statement initial("000010000"b), 12 20 get_statement initial("000010001"b), 12 21 goto_statement initial("000010010"b), 12 22 if_statement initial("000010011"b), 12 23 locate_statement initial("000010100"b), 12 24 null_statement initial("000010101"b), 12 25 on_statement initial("000010110"b), 12 26 open_statement initial("000010111"b), 12 27 procedure_statement initial("000011000"b), 12 28 put_statement initial("000011001"b), 12 29 read_statement initial("000011010"b), 12 30 return_statement initial("000011011"b), 12 31 revert_statement initial("000011100"b), 12 32 rewrite_statement initial("000011101"b), 12 33 signal_statement initial("000011110"b), 12 34 stop_statement initial("000011111"b), 12 35 system_on_unit initial("000100000"b), 12 36 unlock_statement initial("000100001"b), 12 37 wait_statement initial("000100010"b), 12 38 write_statement initial("000100011"b), 12 39 default_statement initial("000100100"b), 12 40 continue_statement initial("000100101"b)) bit(9) internal static aligned options(constant); 100 13 1 /* BEGIN INCLUDE FILE ... entry_sequence_info.incl.pl1 */ 13 2 13 3 13 4 13 5 /****^ HISTORY COMMENTS: 13 6* 1) change(86-04-16,GWMay), approve(86-04-16,MCR7373), 13 7* audit(86-04-29,LJAdams), install(86-05-01,MR12.0-1051): 13 8* reformatted. 13 9* END HISTORY COMMENTS */ 13 10 13 11 13 12 /* coded 5/75 by M. Weaver */ 13 13 /* changed 5/79 by G. Dixon to include entry_desc_info */ 13 14 13 15 dcl 1 parm_desc_ptrs aligned based, 13 16 2 n_args fixed bin(18) unsigned unaligned, 13 17 2 descriptor_relp (num_descs refer(parm_desc_ptrs.n_args)) 13 18 bit(18) unaligned; 13 19 13 20 dcl num_descs fixed bin(18); 13 21 13 22 dcl 1 entry_sequence aligned based, 13 23 2 word1, 13 24 3 descr_relp_offset bit(18) unaligned, /* offset of parm_desc_ptrs structure */ 13 25 3 reserved bit(18) unaligned, 13 26 2 word2, 13 27 3 def_relp bit(18) unaligned, /* offset of entry's definition */ 13 28 3 flags unaligned like entry_desc_info.flags, 13 29 2 code_sequence bit(36) aligned; 13 30 14 1 /* START OF: entry_desc_info.incl.pl1 * * * * * * * * * * * * * * * * */ 14 2 14 3 14 4 14 5 /****^ HISTORY COMMENTS: 14 6* 1) change(84-11-29,Ranzenbach), approve(86-03-12,MCR7144), 14 7* audit(86-03-12,GWMay), install(86-05-01,MR12.0-1051): 14 8* for version 2. This version allows the caller to specify a pointer to 14 9* the beginning of the offset and its bit count. This allows the 14 10* processing of archive components. 14 11* 14 12* NOTICE: 14 13* All applications which use this structure should be converted to 14 14* use version 2. Version 1 can be retained by setting the version to 14 15* a value of 1. The constant entry_desc_info_version_1 has been 14 16* removed from the file. 14 17* END HISTORY COMMENTS */ 14 18 14 19 14 20 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 21 /* */ 14 22 /* Name: entry_desc_info.incl.pl1 */ 14 23 /* */ 14 24 /* This include file is used by get_entry_arg_desc_$info, $text_only_info and their */ 14 25 /* callers. It declares the flag bits obtained from the entry sequence of a procedure */ 14 26 /* entry point. */ 14 27 /* */ 14 28 /* Status */ 14 29 /* */ 14 30 /* 0) Created in May, 1979 by G. C. Dixon */ 14 31 /* */ 14 32 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 33 14 34 dcl 1 entry_desc_info aligned based(entry_desc_info_ptr), 14 35 2 version fixed bin, /* version number of this structure (= 2) */ 14 36 2 flags, 14 37 14 38 (3 basic_indicator, /* on if this is a BASIC program. */ 14 39 3 revision_1, /* on if program entry has stuff added after 5/75 */ 14 40 3 has_descriptors, /* on if entry point had valid parm. descriptors */ 14 41 3 variable, /* on if entry point takes undefined no. of args */ 14 42 3 function) /* on if entry point is a function */ 14 43 bit(1) unaligned, 14 44 3 pad bit(13) unaligned, 14 45 /* version 2 fields follow */ 14 46 2 object_ptr ptr, /* -> beginning of object segment... (INPUT) */ 14 47 2 bit_count fixed bin (24); /* bit count of object... (INPUT) */ 14 48 14 49 dcl entry_desc_info_version_2 fixed bin int static options(constant) init(2), 14 50 entry_desc_info_ptr ptr; 14 51 14 52 /* END OF: entry_desc_info.incl.pl1 * * * * * * * * * * * * * * * * */ 13 31 13 32 13 33 /* END INCLUDE FILE ... entry_sequence_info.incl.pl1 */ 101 102 103 cg_stat$cur_entry, p = pt; 104 ent_pt = p -> statement.labels -> list.element(2) -> reference.symbol; 105 tree = p -> statement.root; 106 text_pos = cg_stat$text_pos; 107 108 cb = cg_stat$cur_block; 109 110 ed = 0; 111 num_descs = tree -> operator.number; 112 do i = 1 to num_descs; 113 if tree -> operand(i) -> reference.symbol -> symbol.star_extents 114 | tree -> operand(i) -> reference.symbol -> symbol.exp_extents /* fortran */ 115 then do; 116 ed = 1; 117 goto l1; 118 end; 119 end; 120 121 l1: if cb -> block.no_stack 122 then do; 123 call expmac(quick_entry_mac + fixed(num_descs > 0,1) + ed, 124 c_a((cb -> block.entry_info),4)); 125 if num_descs > 0 126 then call base_man$update_base(6 + ed,cb,1); 127 goto define; 128 end; 129 130 /* generate definition(s) for entry point */ 131 132 q = ent_pt -> symbol.token; 133 p = addrel(cg_stat$text_base,text_pos); 134 135 /* In the following block of code, we have these pointers: 136* 137* p -> entry_sequence 138* ep -> relocation for entry_sequence 139* q1 -> parm_desc_ptrs 140* q2 -> relocation for parm_desc_ptrs */ 141 142 if ent_pt -> symbol.external 143 then do; 144 if cg_stat$validate_proc = null then n = 0; else n = 4; 145 146 if num_descs = 0 147 then do; 148 149 /* no descriptors, we need not have prefix word or descriptor array */ 150 151 p = addrel(p,-1); 152 ep = addrel(cg_stat$text_reloc_base,text_pos - 1); 153 text_pos = text_pos + 1; 154 end; 155 156 else do; 157 158 /* we have descriptors, we will need to build array of pointers or use old one */ 159 160 q1 = p; 161 q2 = addrel(cg_stat$text_reloc_base,text_pos); 162 163 q1 -> parm_desc_ptrs.n_args = fixed(num_descs,18); 164 165 /* construct array of entry-descriptor pointers */ 166 167 do i = 1 to num_descs; 168 desc_pt = tree -> operand(i) -> reference.symbol -> symbol.descriptor 169 -> reference.symbol; 170 if ^ desc_pt -> symbol.constant then desc_pt = desc_pt -> symbol.descriptor; 171 q1 -> parm_desc_ptrs.descriptor_relp(i) = bit(fixed(desc_pt -> symbol.location,18),18); 172 q2 -> text_desc_reloc.reloc(i) = rc_t; 173 end; 174 175 bi_size = (num_descs + 1) * 18; 176 177 /* determine if the array already exists in the text section */ 178 179 not_found = "1"b; 180 lp = cg_stat$desc_list_ptr; 181 182 do while(lp ^= null & not_found); 183 if q1 -> bit_image = lp -> list.element(2) -> bit_image 184 then not_found = "0"b; 185 else lp = lp -> list.element(1); 186 end; 187 188 if not_found 189 then do; 190 191 /* No; put the array on the list of such arrays */ 192 193 desc_list_ptr = create_list(2); 194 desc_list_ptr -> list.element(1) = cg_stat$desc_list_ptr; 195 cg_stat$desc_list_ptr = desc_list_ptr; 196 desc_list_ptr -> list.element(2) = q1; 197 198 text_pos = text_pos + size(q1 -> parm_desc_ptrs); 199 p = addrel(cg_stat$text_base,text_pos); 200 p -> entry_sequence.descr_relp_offset = rel(q1); 201 end; 202 203 else do; 204 205 /* Yes; use the old array */ 206 207 q1 -> bit_image = "0"b; 208 q2 -> bit_image = "0"b; 209 q1 -> entry_sequence.descr_relp_offset = rel(lp -> list.element(2)); 210 end; 211 212 ep = addrel(cg_stat$text_reloc_base,text_pos); 213 214 ep -> reloc(0).left = rc_t; 215 p -> entry_sequence.has_descriptors = "1"b; 216 217 text_pos = text_pos + 2; 218 end; 219 220 m = index(q -> token.string,"$"); 221 call generate_definition(substr(q->token.string,m+1),0,bit(text_pos,18)); 222 def_ptr = addrel(cg_stat$def_base,cg_stat$last_def); 223 224 if substr(q -> token.string,m+1) = "symbol_table" 225 then call error(364,cg_stat$cur_statement,null); 226 227 gen_dummy = m ^= 0; 228 229 end; 230 231 else do; 232 233 /* internal entry, we need no descriptor information */ 234 235 n = 2; 236 p = addrel(p,-1); 237 ep = addrel(cg_stat$text_reloc_base,text_pos-1); 238 text_pos = text_pos + 1; 239 gen_dummy = "1"b; 240 end; 241 242 if gen_dummy 243 then do; 244 245 /* entry name is of form a$b or we have internal entry, 246* generate dummy def for use in labelling entry */ 247 248 call generate_definition(q -> token.string,0,bit(text_pos,18)); 249 250 def_ptr = addrel(cg_stat$def_base,cg_stat$last_def); 251 def_ptr -> definition.ignore = "1"b; 252 end; 253 254 def_ptr -> definition.retain = "1"b; 255 p -> entry_sequence.revision_1 = "1"b; 256 p -> entry_sequence.variable = ent_pt -> symbol.variable_arg_list; 257 p -> entry_sequence.function = ent_pt -> symbol.returns; 258 p -> entry_sequence.def_relp = cg_stat$last_def; 259 ep -> reloc(1).left = rc_dp; 260 261 /* generate entry macro */ 262 263 cg_stat$text_pos = text_pos; 264 265 if cg_stat$separate_static 266 then entry_type = ss_ext_entry; 267 else entry_type = ext_entry; 268 269 if cg_stat$entry_arg = null then call expmac$zero(entry_type + n + ed); 270 else do; 271 if cg_stat$separate_static 272 then om = ss_op_offset; 273 else om = 0; 274 arg(1) = c_a(om + n + ed,11); /* bp|... */ 275 arg(2) = cg_stat$entry_arg; 276 call expmac$many(entry_macro,addr(arg),2); 277 end; 278 279 /* fill in entry trailer info */ 280 281 p = addrel(cg_stat$text_base,cg_stat$text_pos); 282 p -> entry_info.num_args = bit(fixed(num_descs,17),17); 283 pos = cg_stat$text_pos + 1; 284 cg_stat$text_pos = cg_stat$text_pos + 2; 285 286 /* generate validate trailer if needed */ 287 288 if n = 4 289 then do; 290 p = c_a((cg_stat$validate_proc -> symbol.location),2); /* k),dl */ 291 p -> reference.relocation = rc_lp18; 292 call expmac(nop_mac,p); 293 end; 294 295 /* entry operator loads the lp */ 296 297 call base_man$update_base(5,null,2); 298 299 /* generate code to set support bit, if specified */ 300 301 if cg_stat$support 302 then call expmac$zero((support_mac)); 303 304 /* set main_proc bit if procedure is options(main) */ 305 306 if cb->block.options_main & pt->statement.statement_type = procedure_statement 307 then call expmac$zero((set_main_mac)); 308 309 /* assign entry to current position */ 310 311 define: call expmac$fill_usage(text_pos,(ent_pt -> symbol.location)); 312 ent_pt -> symbol.location = text_pos; 313 ent_pt -> symbol.allocated = "1"b; 314 315 /* The following code attempts to optimize reference to incoming arguments 316* by extracting and saving the offsets and sizes of the arguments. When 317* a later reference is made to the expression 318* bit_pointer(param_ptr(k,block)) 319* the value stored in the 2*k-1 ptr in the list attached to the block 320* will be accessed. Similarly for the expression 321* desc_size(param_desc_ptr(k,block)) 322* and the value in element 2*k. */ 323 324 n = 2 * tree -> operator.number; 325 p = cb -> block.o_and_s; 326 327 if p = null then cb -> block.o_and_s, p = create_list(n); 328 else if n > p -> list.number 329 then do; 330 q = create_list(n); 331 do i = 1 to p -> list.number; 332 q -> element(i) = p -> element(i); 333 end; 334 cb -> block.o_and_s, p = q; 335 end; 336 337 /* If this is an entry which returns something with * extent, 338* don't look at return parameter */ 339 340 m = tree -> operator.number; 341 pa = ent_pt -> symbol.dcl_size; 342 if pa ^= null 343 then if pa -> symbol.star_extents 344 then m = m - 1; 345 346 pa = c_a(0,4); 347 348 /* Now do all of the sizes */ 349 350 do i = 1 to m; 351 q = tree -> operand(i); 352 q1 = q -> reference.length; 353 if q1 = null 354 then do; 355 q2 = q -> reference.symbol; 356 if ^ q2 -> symbol.area then goto step; 357 if ^ q2 -> symbol.star_extents then goto step; 358 359 /* have area(*) parameter, have to extract size even though 360* no explicit desc_size operator appears */ 361 362 q2 = q -> reference.qualifier; 363 if q2 = null then goto step; 364 365 if q2 -> node.type ^= operator_node then goto step; 366 if q2 -> op_code ^= param_ptr then goto step; 367 368 if q2 -> operand(3) ^= cb then goto step; 369 370 if q2 -> operand(2) -> reference.symbol -> symbol.initial -> based_fixed ^= i then goto step; 371 372 q3 = c_a(2*(i-1),4); 373 q3 -> address.base = base_man$load_arg(1,cb); 374 q3 -> address.tag = "010000"b; /* * */ 375 376 goto gds; 377 end; 378 379 if q1 -> node.type ^= operator_node then goto step; 380 if q1 -> op_code ^= desc_size then goto step; 381 382 q2 = q1 -> operand(2); 383 if q2 -> node.type ^= reference_node then goto step; 384 385 q2 = q2 -> reference.qualifier; 386 if q2 = null then goto step; 387 388 if q2 -> node.type ^= operator_node then goto step; 389 if q2 -> op_code ^= param_desc_ptr then goto step; 390 391 if q2 -> operand(3) ^= cb then goto step; 392 if q2 -> operand(2) -> reference.symbol -> symbol.initial -> based_fixed ^= i then goto step; 393 394 q3 = q1 -> operand(2); 395 396 /* we found a length expression to evaluate, make sure we have 397* an automatic integer variable in which to save it */ 398 399 gds: p1 = p -> element(2*i); 400 if p1 = null then p -> element(2*i), p1 = get_variable(cb); 401 402 call expmac((get_desc_size),q3); 403 call store(p1); 404 405 step: end; 406 407 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/20/86 1145.0 compile_entry.pl1 >special_ldd>install>MR12.0-1222>compile_entry.pl1 89 1 11/20/86 1035.2 definition.incl.pl1 >special_ldd>install>MR12.0-1222>definition.incl.pl1 90 2 08/13/81 2043.5 block.incl.pl1 >ldd>include>block.incl.pl1 91 3 04/07/83 1635.0 statement.incl.pl1 >ldd>include>statement.incl.pl1 92 4 08/13/81 2211.5 list.incl.pl1 >ldd>include>list.incl.pl1 93 5 07/21/80 1546.3 operator.incl.pl1 >ldd>include>operator.incl.pl1 94 6 12/07/83 1701.7 symbol.incl.pl1 >ldd>include>symbol.incl.pl1 95 7 09/14/77 1705.7 token.incl.pl1 >ldd>include>token.incl.pl1 96 8 07/21/80 1546.3 reference.incl.pl1 >ldd>include>reference.incl.pl1 97 9 07/21/80 1546.3 nodes.incl.pl1 >ldd>include>nodes.incl.pl1 98 10 10/30/80 1648.7 relocation_bits.incl.pl1 >ldd>include>relocation_bits.incl.pl1 99 11 04/07/83 1635.0 op_codes.incl.pl1 >ldd>include>op_codes.incl.pl1 100 12 05/03/76 1320.4 statement_types.incl.pl1 >ldd>include>statement_types.incl.pl1 101 13 05/01/86 0849.8 entry_sequence_info.incl.pl1 >ldd>include>entry_sequence_info.incl.pl1 13-31 14 05/01/86 0849.8 entry_desc_info.incl.pl1 >ldd>include>entry_desc_info.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. addr builtin function dcl 53 ref 276 276 addrel builtin function dcl 53 ref 133 151 152 161 199 212 222 236 237 250 281 address 10 based structure level 2 packed unaligned dcl 8-3 allocated 1(18) based bit(1) level 2 packed unaligned dcl 6-3 set ref 313* area 31(07) based bit(1) level 4 packed unaligned dcl 6-3 ref 356 arg 000130 automatic pointer array dcl 33 set ref 274* 275* 276 276 array 0(18) based structure array level 2 packed unaligned dcl 63 attributes 31 based structure level 2 dcl 6-3 base 10 based bit(3) level 3 packed unaligned dcl 8-3 set ref 373* base_man$load_arg 000054 constant entry external dcl 45 ref 373 base_man$update_base 000052 constant entry external dcl 40 ref 125 297 based_fixed based fixed bin(17,0) dcl 61 ref 370 392 bi_size 000142 automatic fixed bin(17,0) dcl 33 set ref 175* 183 183 207 208 bit builtin function dcl 53 ref 171 221 221 248 248 282 bit_image based bit dcl 33 set ref 183 183 207* 208* block based structure level 1 dcl 2-5 c_a 000062 constant entry external dcl 46 ref 123 123 274 290 346 372 cb 000106 automatic pointer dcl 33 set ref 108* 121 123 123 125* 306 325 327 334 368 373* 391 400* cg_stat$cur_block 000024 external static pointer dcl 25 ref 108 cg_stat$cur_entry 000016 external static pointer dcl 25 set ref 103* cg_stat$cur_statement 000030 external static pointer dcl 25 set ref 224* cg_stat$def_base 000012 external static pointer dcl 25 ref 222 250 cg_stat$desc_list_ptr 000020 external static pointer dcl 25 set ref 180 194 195* cg_stat$entry_arg 000022 external static pointer dcl 25 ref 269 275 cg_stat$last_def 000032 external static bit(18) dcl 25 ref 222 250 258 cg_stat$separate_static 000036 external static bit(1) unaligned dcl 25 ref 265 271 cg_stat$support 000034 external static bit(1) dcl 25 ref 301 cg_stat$text_base 000010 external static pointer dcl 25 ref 133 199 281 cg_stat$text_pos 000040 external static fixed bin(18,0) dcl 25 set ref 106 263* 281 283 284* 284 cg_stat$text_reloc_base 000026 external static pointer dcl 25 ref 152 161 212 237 cg_stat$validate_proc 000014 external static pointer dcl 25 ref 144 290 compiler_developed 32(35) based structure level 3 packed unaligned dcl 6-3 constant 32(16) based bit(1) level 4 packed unaligned dcl 6-3 ref 170 create_list 000056 constant entry external dcl 46 ref 193 327 330 data_type 31 based structure level 3 packed unaligned dcl 6-3 dcl_size 24 based pointer level 2 packed unaligned dcl 6-3 ref 341 def_ptr 000140 automatic pointer dcl 33 set ref 222* 250* 251 254 def_relp 1 based bit(18) level 3 packed unaligned dcl 13-22 set ref 258* definition based structure level 1 dcl 1-12 desc_list_ptr 000136 automatic pointer dcl 33 set ref 193* 194 195 196 desc_pt 000134 automatic pointer dcl 33 set ref 168* 170 170* 170 171 desc_size constant bit(9) initial dcl 11-8 ref 380 descr_relp_offset based bit(18) level 3 packed unaligned dcl 13-22 set ref 200* 209* descriptor 13 based pointer level 2 packed unaligned dcl 6-3 ref 168 170 descriptor_relp 0(18) based bit(18) array level 2 packed unaligned dcl 13-15 set ref 171* ed 000153 automatic fixed bin(18,0) dcl 33 set ref 110* 116* 123 125 269 274 element 1 based pointer array level 2 packed unaligned dcl 4-6 set ref 104 183 185 194* 196* 209 332* 332 399 400* ent_pt 000110 automatic pointer dcl 33 set ref 104* 132 142 256 257 311 312 313 341 entry_desc_info based structure level 1 dcl 14-34 entry_info based structure level 1 dcl 69 in procedure "compile_entry" entry_info 50 based fixed bin(18,0) level 2 in structure "block" dcl 2-5 in procedure "compile_entry" ref 123 123 entry_macro 000001 constant fixed bin(15,0) initial dcl 76 set ref 276* entry_sequence based structure level 1 dcl 13-22 entry_type 000145 automatic fixed bin(15,0) dcl 33 set ref 265* 267* 269 ep 000102 automatic pointer dcl 33 set ref 152* 212* 214 237* 259 error 000070 constant entry external dcl 46 ref 224 exp_extents 33(04) based bit(1) level 4 packed unaligned dcl 6-3 ref 113 expmac 000066 constant entry external dcl 46 ref 123 292 402 expmac$fill_usage 000042 constant entry external dcl 40 ref 311 expmac$many 000046 constant entry external dcl 40 ref 276 expmac$zero 000050 constant entry external dcl 40 ref 269 301 306 ext_entry constant fixed bin(15,0) initial dcl 76 ref 267 external 32(02) based bit(1) level 4 packed unaligned dcl 6-3 ref 142 fixed builtin function dcl 53 ref 123 163 171 282 flags 1(18) based structure level 2 in structure "definition" packed unaligned dcl 1-12 in procedure "compile_entry" flags 1 based structure level 2 in structure "entry_desc_info" dcl 14-34 in procedure "compile_entry" flags 1(18) based structure level 3 in structure "entry_sequence" packed unaligned dcl 13-22 in procedure "compile_entry" function 1(22) based bit(1) level 4 packed unaligned dcl 13-22 set ref 257* gen_dummy 000143 automatic bit(1) dcl 33 set ref 227* 239* 242 generate_definition 000064 constant entry external dcl 46 ref 221 248 get_desc_size constant fixed bin(15,0) initial dcl 76 ref 402 get_variable 000060 constant entry external dcl 46 ref 400 has_descriptors 1(20) based bit(1) level 4 packed unaligned dcl 13-22 set ref 215* i 000146 automatic fixed bin(18,0) dcl 33 set ref 112* 113 113* 167* 168 171 172* 331* 332 332* 350* 351 370 372 392 399 400* ignore 1(19) based bit(1) level 3 packed unaligned dcl 1-12 set ref 251* index builtin function dcl 53 ref 220 initial 11 based pointer level 2 packed unaligned dcl 6-3 ref 370 392 labels 4 based pointer level 2 packed unaligned dcl 3-9 ref 104 left 0(12) based bit(6) array level 2 packed unaligned dcl 55 set ref 214* 259* length 6 based pointer level 2 packed unaligned dcl 8-3 ref 352 list based structure level 1 dcl 4-6 location 1 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 6-3 set ref 171 290 311 312* lp 000104 automatic pointer dcl 33 set ref 180* 182 183 185* 185 209 m 000150 automatic fixed bin(18,0) dcl 33 set ref 220* 221 221 224 227 340* 342* 342 350 misc_attributes 31(19) based structure level 3 packed unaligned dcl 6-3 n 000147 automatic fixed bin(18,0) dcl 33 set ref 144* 144* 235* 269 274 288 324* 327* 328 330* n_args based fixed bin(18,0) level 2 packed unsigned unaligned dcl 13-15 set ref 163* no_stack 24(22) based bit(1) level 2 packed unaligned dcl 2-5 ref 121 node based structure level 1 dcl 9-27 nop_mac 000000 constant fixed bin(15,0) initial dcl 76 set ref 292* not_found 000144 automatic bit(1) dcl 33 set ref 179* 182 183* 188 null builtin function dcl 53 ref 144 182 224 224 269 297 297 327 342 353 363 386 400 num_args based bit(17) level 2 packed unaligned dcl 69 set ref 282* num_descs 000154 automatic fixed bin(18,0) dcl 13-20 set ref 111* 112 123 125 146 163 167 175 198 282 number 0(21) based fixed bin(14,0) level 2 in structure "list" packed unaligned dcl 4-6 in procedure "compile_entry" ref 328 331 number 0(21) based fixed bin(14,0) level 2 in structure "operator" packed unaligned dcl 5-6 in procedure "compile_entry" ref 111 324 340 o_and_s 40 based pointer level 2 dcl 2-5 set ref 325 327* 334* om 000151 automatic fixed bin(18,0) dcl 33 set ref 271* 273* 274 op_code 0(09) based bit(9) level 2 packed unaligned dcl 5-6 ref 366 380 389 operand 1 based pointer array level 2 packed unaligned dcl 5-6 ref 113 113 168 351 368 370 382 391 392 394 operator based structure level 1 dcl 5-6 operator_node constant bit(9) initial dcl 9-5 ref 365 379 388 options_main 43(01) based bit(1) level 2 packed unaligned dcl 2-5 ref 306 p 000100 automatic pointer dcl 33 set ref 103* 104 105 133* 151* 151 160 199* 200 215 236* 236 255 256 257 258 281* 282 290* 291 292* 325* 327 327* 328 331 332 334* 399 400 p1 000120 automatic pointer dcl 33 set ref 399* 400 400* 403* pa 000116 automatic pointer dcl 33 set ref 341* 342 342 346* param_desc_ptr constant bit(9) initial dcl 11-8 ref 389 param_ptr constant bit(9) initial dcl 11-8 ref 366 parm_desc_ptrs based structure level 1 dcl 13-15 set ref 198 pos parameter fixed bin(18,0) dcl 22 set ref 20 283* procedure_statement constant bit(9) initial dcl 12-3 ref 306 pt parameter pointer dcl 22 ref 20 103 306 q 000114 automatic pointer dcl 33 set ref 132* 220 221 221 224 248 330* 332 334 351* 352 355 362 q1 000122 automatic pointer dcl 33 set ref 160* 163 171 183 196 198 200 207 209 352* 353 379 380 382 394 q2 000124 automatic pointer dcl 33 set ref 161* 172 208 355* 356 357 362* 363 365 366 368 370 382* 383 385* 385 386 388 389 391 392 q3 000126 automatic pointer dcl 33 set ref 372* 373 374 394* 402* qualifier 4 based pointer level 2 packed unaligned dcl 8-3 ref 362 385 quick_entry_mac constant fixed bin(15,0) initial dcl 76 ref 123 rc_dp constant bit(6) initial unaligned dcl 10-6 ref 259 rc_lp18 constant bit(6) initial unaligned dcl 10-6 ref 291 rc_t 001560 constant bit(6) initial unaligned dcl 10-6 ref 172 214 reference based structure level 1 dcl 8-3 reference_node constant bit(9) initial dcl 9-5 ref 383 rel builtin function dcl 53 ref 200 209 reloc based structure array level 1 dcl 55 in procedure "compile_entry" reloc 0(30) based bit(6) array level 3 in structure "text_desc_reloc" packed unaligned dcl 63 in procedure "compile_entry" set ref 172* relocation 12(24) based bit(12) level 2 packed unaligned dcl 8-3 set ref 291* retain 1(21) based bit(1) level 3 packed unaligned dcl 1-12 set ref 254* returns 31(35) based bit(1) level 4 packed unaligned dcl 6-3 ref 257 revision_1 1(19) based bit(1) level 4 packed unaligned dcl 13-22 set ref 255* root 3 based pointer level 2 packed unaligned dcl 3-9 ref 105 set_main_mac constant fixed bin(15,0) initial dcl 76 ref 306 size builtin function dcl 53 in procedure "compile_entry" ref 198 size 3 based fixed bin(9,0) level 2 in structure "token" dcl 7-3 in procedure "compile_entry" ref 220 221 221 224 248 248 ss_ext_entry constant fixed bin(15,0) initial dcl 76 ref 265 ss_op_offset constant fixed bin(15,0) initial dcl 76 ref 271 star_extents 33(06) based bit(1) level 4 packed unaligned dcl 6-3 ref 113 342 357 statement based structure level 1 dcl 3-9 statement_type 12(27) based bit(9) level 2 packed unaligned dcl 3-9 ref 306 storage_class 32(09) based structure level 3 packed unaligned dcl 6-3 store 000044 constant entry external dcl 40 ref 403 string 4 based char level 2 dcl 7-3 set ref 220 221 221 224 248* substr builtin function dcl 53 ref 221 221 224 support_mac constant fixed bin(15,0) initial dcl 76 ref 301 symbol 3 based pointer level 2 in structure "reference" packed unaligned dcl 8-3 in procedure "compile_entry" ref 104 113 113 168 168 355 370 392 symbol based structure level 1 dcl 6-3 in procedure "compile_entry" tag 10(30) based bit(6) level 3 packed unaligned dcl 8-3 set ref 374* text_desc_reloc based structure level 1 dcl 63 text_pos 000152 automatic fixed bin(18,0) dcl 33 set ref 106* 133 152 153* 153 161 198* 198 199 212 217* 217 221 221 237 238* 238 248 248 263 311* 312 token 5 based pointer level 2 in structure "symbol" packed unaligned dcl 6-3 in procedure "compile_entry" ref 132 token based structure level 1 dcl 7-3 in procedure "compile_entry" tree 000112 automatic pointer dcl 33 set ref 105* 111 113 113 168 324 340 351 type based bit(9) level 2 packed unaligned dcl 9-27 ref 365 379 383 388 variable 1(21) based bit(1) level 4 packed unaligned dcl 13-22 set ref 256* variable_arg_list 32(07) based bit(1) level 4 packed unaligned dcl 6-3 ref 256 word1 based structure level 2 dcl 13-22 word2 1 based structure level 2 dcl 13-22 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. a_format internal static bit(9) initial dcl 11-8 abs_fun internal static bit(9) initial dcl 11-8 acos_fun internal static bit(9) initial dcl 11-8 acosd_fun internal static bit(9) initial dcl 11-8 add internal static bit(9) initial dcl 11-8 addbitno_fun internal static bit(9) initial dcl 11-8 addcharno_fun internal static bit(9) initial dcl 11-8 addr_fun internal static bit(9) initial dcl 11-8 addr_fun_bits internal static bit(9) initial dcl 11-8 addrel_fun internal static bit(9) initial dcl 11-8 allocate_statement internal static bit(9) initial dcl 12-3 allocation_fun internal static bit(9) initial dcl 11-8 allot_auto internal static bit(9) initial dcl 11-8 allot_based internal static bit(9) initial dcl 11-8 allot_ctl internal static bit(9) initial dcl 11-8 allot_var internal static bit(9) initial dcl 11-8 and_bits internal static bit(9) initial dcl 11-8 array_node internal static bit(9) initial dcl 9-5 asin_fun internal static bit(9) initial dcl 11-8 asind_fun internal static bit(9) initial dcl 11-8 assign internal static bit(9) initial dcl 11-8 assign_by_name internal static bit(9) initial dcl 11-8 assign_round internal static bit(9) initial dcl 11-8 assign_size_ck internal static bit(9) initial dcl 11-8 assign_zero internal static bit(9) initial dcl 11-8 assignment_statement internal static bit(9) initial dcl 12-3 atan_fun internal static bit(9) initial dcl 11-8 atand_fun internal static bit(9) initial dcl 11-8 b_format internal static bit(9) initial dcl 11-8 baseno_fun internal static bit(9) initial dcl 11-8 baseptr_fun internal static bit(9) initial dcl 11-8 begin_statement internal static bit(9) initial dcl 12-3 bit_pointer internal static bit(9) initial dcl 11-8 bit_to_char internal static bit(9) initial dcl 11-8 bit_to_word internal static bit(9) initial dcl 11-8 bitno_fun internal static bit(9) initial dcl 11-8 block_node internal static bit(9) initial dcl 9-5 bn_format internal static bit(9) initial dcl 11-8 bool_fun internal static bit(9) initial dcl 11-8 bound_ck internal static bit(9) initial dcl 11-8 bound_node internal static bit(9) initial dcl 9-5 by_name_agg_node internal static bit(9) initial dcl 9-5 byte_fun internal static bit(9) initial dcl 11-8 c_format internal static bit(9) initial dcl 11-8 call_statement internal static bit(9) initial dcl 12-3 cat_string internal static bit(9) initial dcl 11-8 ceil_fun internal static bit(9) initial dcl 11-8 char_to_word internal static bit(9) initial dcl 11-8 charno_fun internal static bit(9) initial dcl 11-8 clock_fun internal static bit(9) initial dcl 11-8 close_file internal static bit(9) initial dcl 11-8 close_statement internal static bit(9) initial dcl 12-3 codeptr_fun internal static bit(9) initial dcl 11-8 column_format internal static bit(9) initial dcl 11-8 complex_fun internal static bit(9) initial dcl 11-8 conjg_fun internal static bit(9) initial dcl 11-8 context_node internal static bit(9) initial dcl 9-5 continue_statement internal static bit(9) initial dcl 12-3 copy_string internal static bit(9) initial dcl 11-8 copy_words internal static bit(9) initial dcl 11-8 cos_fun internal static bit(9) initial dcl 11-8 cosd_fun internal static bit(9) initial dcl 11-8 cross_reference_node internal static bit(9) initial dcl 9-5 declare_statement internal static bit(9) initial dcl 12-3 default_node internal static bit(9) initial dcl 9-5 default_statement internal static bit(9) initial dcl 12-3 delete_file internal static bit(9) initial dcl 11-8 delete_statement internal static bit(9) initial dcl 12-3 digit_to_bit internal static bit(9) initial dcl 11-8 display_statement internal static bit(9) initial dcl 12-3 div internal static bit(9) initial dcl 11-8 do_fun internal static bit(9) initial dcl 11-8 do_spec internal static bit(9) initial dcl 11-8 do_statement internal static bit(9) initial dcl 12-3 e_format internal static bit(9) initial dcl 11-8 else_clause internal static bit(9) initial dcl 12-3 empty_area internal static bit(9) initial dcl 11-8 enable_on internal static bit(9) initial dcl 11-8 end_statement internal static bit(9) initial dcl 12-3 entry_desc_info_ptr automatic pointer dcl 14-49 entry_desc_info_version_2 internal static fixed bin(17,0) initial dcl 14-49 entry_statement internal static bit(9) initial dcl 12-3 environmentptr_fun internal static bit(9) initial dcl 11-8 equal internal static bit(9) initial dcl 11-8 ex_prologue internal static bit(9) initial dcl 11-8 exit_statement internal static bit(9) initial dcl 12-3 exp internal static bit(9) initial dcl 11-8 exp_fun internal static bit(9) initial dcl 11-8 f_format internal static bit(9) initial dcl 11-8 floor_fun internal static bit(9) initial dcl 11-8 format_statement internal static bit(9) initial dcl 12-3 format_value_node internal static bit(9) initial dcl 9-5 fortran_read internal static bit(9) initial dcl 11-8 fortran_write internal static bit(9) initial dcl 11-8 free_based internal static bit(9) initial dcl 11-8 free_ctl internal static bit(9) initial dcl 11-8 free_statement internal static bit(9) initial dcl 12-3 free_var internal static bit(9) initial dcl 11-8 ftn_file_manip internal static bit(9) initial dcl 11-8 ftn_trans_loop internal static bit(9) initial dcl 11-8 get_data_trans internal static bit(9) initial dcl 11-8 get_edit_trans internal static bit(9) initial dcl 11-8 get_file internal static bit(9) initial dcl 11-8 get_list_trans internal static bit(9) initial dcl 11-8 get_statement internal static bit(9) initial dcl 12-3 get_string internal static bit(9) initial dcl 11-8 goto_statement internal static bit(9) initial dcl 12-3 greater_or_equal internal static bit(9) initial dcl 11-8 greater_than internal static bit(9) initial dcl 11-8 half_to_word internal static bit(9) initial dcl 11-8 if_statement internal static bit(9) initial dcl 12-3 imag_fun internal static bit(9) initial dcl 11-8 index_after_fun internal static bit(9) initial dcl 11-8 index_before_fun internal static bit(9) initial dcl 11-8 index_fun internal static bit(9) initial dcl 11-8 index_rev_fun internal static bit(9) initial dcl 11-8 join internal static bit(9) initial dcl 11-8 jump internal static bit(9) initial dcl 11-8 jump_false internal static bit(9) initial dcl 11-8 jump_if_eq internal static bit(9) initial dcl 11-8 jump_if_ge internal static bit(9) initial dcl 11-8 jump_if_gt internal static bit(9) initial dcl 11-8 jump_if_le internal static bit(9) initial dcl 11-8 jump_if_lt internal static bit(9) initial dcl 11-8 jump_if_ne internal static bit(9) initial dcl 11-8 jump_true internal static bit(9) initial dcl 11-8 l_parn internal static bit(9) initial dcl 11-8 label_array_element_node internal static bit(9) initial dcl 9-5 label_node internal static bit(9) initial dcl 9-5 length_fun internal static bit(9) initial dcl 11-8 less_or_equal internal static bit(9) initial dcl 11-8 less_than internal static bit(9) initial dcl 11-8 line_format internal static bit(9) initial dcl 11-8 list_node internal static bit(9) initial dcl 9-5 locate_file internal static bit(9) initial dcl 11-8 locate_statement internal static bit(9) initial dcl 12-3 lock_file internal static bit(9) initial dcl 11-8 lock_fun internal static bit(9) initial dcl 11-8 lock_statement internal static bit(9) initial dcl 12-3 log10_fun internal static bit(9) initial dcl 11-8 log2_fun internal static bit(9) initial dcl 11-8 log_fun internal static bit(9) initial dcl 11-8 loop internal static bit(9) initial dcl 11-8 machine_state_node internal static bit(9) initial dcl 9-5 make_desc internal static bit(9) initial dcl 11-8 max_block_number internal static fixed bin(17,0) initial dcl 2-74 max_fun internal static bit(9) initial dcl 11-8 max_list_elements internal static fixed bin(17,0) initial dcl 4-12 max_number_of_operands internal static fixed bin(15,0) initial dcl 5-15 min_fun internal static bit(9) initial dcl 11-8 mod_bit internal static bit(9) initial dcl 11-8 mod_byte internal static bit(9) initial dcl 11-8 mod_fun internal static bit(9) initial dcl 11-8 mod_half internal static bit(9) initial dcl 11-8 mod_word internal static bit(9) initial dcl 11-8 mult internal static bit(9) initial dcl 11-8 negate internal static bit(9) initial dcl 11-8 nop internal static bit(9) initial dcl 11-8 not_bits internal static bit(9) initial dcl 11-8 not_equal internal static bit(9) initial dcl 11-8 null_statement internal static bit(9) initial dcl 12-3 off_fun internal static bit(9) initial dcl 11-8 on_statement internal static bit(9) initial dcl 12-3 open_file internal static bit(9) initial dcl 11-8 open_statement internal static bit(9) initial dcl 12-3 or_bits internal static bit(9) initial dcl 11-8 pack internal static bit(9) initial dcl 11-8 page_format internal static bit(9) initial dcl 11-8 picture_format internal static bit(9) initial dcl 11-8 pl1_mod_fun internal static bit(9) initial dcl 11-8 prefix_plus internal static bit(9) initial dcl 11-8 ptr_fun internal static bit(9) initial dcl 11-8 put_control internal static bit(9) initial dcl 11-8 put_data_trans internal static bit(9) initial dcl 11-8 put_edit_trans internal static bit(9) initial dcl 11-8 put_field internal static bit(9) initial dcl 11-8 put_field_chk internal static bit(9) initial dcl 11-8 put_file internal static bit(9) initial dcl 11-8 put_list_trans internal static bit(9) initial dcl 11-8 put_statement internal static bit(9) initial dcl 12-3 put_string internal static bit(9) initial dcl 11-8 r_format internal static bit(9) initial dcl 11-8 r_parn internal static bit(9) initial dcl 11-8 range_ck internal static bit(9) initial dcl 11-8 rank_fun internal static bit(9) initial dcl 11-8 rc_a internal static bit(6) initial unaligned dcl 10-6 rc_e internal static bit(6) initial unaligned dcl 10-6 rc_is15 internal static bit(6) initial unaligned dcl 10-6 rc_is18 internal static bit(6) initial unaligned dcl 10-6 rc_lb internal static bit(6) initial unaligned dcl 10-6 rc_lp15 internal static bit(6) initial unaligned dcl 10-6 rc_nlb internal static bit(6) initial unaligned dcl 10-6 rc_nlp18 internal static bit(6) initial unaligned dcl 10-6 rc_ns internal static bit(6) initial unaligned dcl 10-6 rc_nt internal static bit(6) initial unaligned dcl 10-6 rc_s internal static bit(6) initial unaligned dcl 10-6 rc_sr internal static bit(6) initial unaligned dcl 10-6 read_file internal static bit(9) initial dcl 11-8 read_statement internal static bit(9) initial dcl 12-3 real_fun internal static bit(9) initial dcl 11-8 record_io internal static bit(9) initial dcl 11-8 refer internal static bit(9) initial dcl 11-8 rel_fun internal static bit(9) initial dcl 11-8 repeat_fun internal static bit(9) initial dcl 11-8 return_bits internal static bit(9) initial dcl 11-8 return_statement internal static bit(9) initial dcl 12-3 return_string internal static bit(9) initial dcl 11-8 return_value internal static bit(9) initial dcl 11-8 return_words internal static bit(9) initial dcl 11-8 reverse_fun internal static bit(9) initial dcl 11-8 revert_on internal static bit(9) initial dcl 11-8 revert_statement internal static bit(9) initial dcl 12-3 rewrite_file internal static bit(9) initial dcl 11-8 rewrite_statement internal static bit(9) initial dcl 12-3 round_fun internal static bit(9) initial dcl 11-8 search_fun internal static bit(9) initial dcl 11-8 search_rev_fun internal static bit(9) initial dcl 11-8 segno_fun internal static bit(9) initial dcl 11-8 setbitno_fun internal static bit(9) initial dcl 11-8 setcharno_fun internal static bit(9) initial dcl 11-8 sf_par_node internal static bit(9) initial dcl 9-5 sign_fun internal static bit(9) initial dcl 11-8 signal_on internal static bit(9) initial dcl 11-8 signal_statement internal static bit(9) initial dcl 12-3 sin_fun internal static bit(9) initial dcl 11-8 sind_fun internal static bit(9) initial dcl 11-8 skip_format internal static bit(9) initial dcl 11-8 source_node internal static bit(9) initial dcl 9-5 sqrt_fun internal static bit(9) initial dcl 11-8 stack_ptr internal static bit(9) initial dcl 11-8 stackbaseptr_fun internal static bit(9) initial dcl 11-8 stackframeptr_fun internal static bit(9) initial dcl 11-8 stacq_fun internal static bit(9) initial dcl 11-8 statement_node internal static bit(9) initial dcl 9-5 std_arg_list internal static bit(9) initial dcl 11-8 std_call internal static bit(9) initial dcl 11-8 std_entry internal static bit(9) initial dcl 11-8 std_return internal static bit(9) initial dcl 11-8 stop internal static bit(9) initial dcl 11-8 stop_statement internal static bit(9) initial dcl 12-3 stream_prep internal static bit(9) initial dcl 11-8 sub internal static bit(9) initial dcl 11-8 symbol_node internal static bit(9) initial dcl 9-5 system_on_unit internal static bit(9) initial dcl 12-3 tan_fun internal static bit(9) initial dcl 11-8 tand_fun internal static bit(9) initial dcl 11-8 temporary_node internal static bit(9) initial dcl 9-5 terminate_trans internal static bit(9) initial dcl 11-8 token_node internal static bit(9) initial dcl 9-5 translate_fun internal static bit(9) initial dcl 11-8 trunc_fun internal static bit(9) initial dcl 11-8 unknown_statement internal static bit(9) initial dcl 12-3 unlock_file internal static bit(9) initial dcl 11-8 unlock_statement internal static bit(9) initial dcl 12-3 unpack internal static bit(9) initial dcl 11-8 vclock_fun internal static bit(9) initial dcl 11-8 verify_fun internal static bit(9) initial dcl 11-8 verify_ltrim_fun internal static bit(9) initial dcl 11-8 verify_rev_fun internal static bit(9) initial dcl 11-8 verify_rtrim_fun internal static bit(9) initial dcl 11-8 wait_statement internal static bit(9) initial dcl 12-3 word_to_mod2 internal static bit(9) initial dcl 11-8 word_to_mod4 internal static bit(9) initial dcl 11-8 word_to_mod8 internal static bit(9) initial dcl 11-8 wordno_fun internal static bit(9) initial dcl 11-8 write_file internal static bit(9) initial dcl 11-8 write_statement internal static bit(9) initial dcl 12-3 x_format internal static bit(9) initial dcl 11-8 xor_bits internal static bit(9) initial dcl 11-8 NAMES DECLARED BY EXPLICIT CONTEXT. compile_entry 000021 constant entry external dcl 20 define 001130 constant label dcl 311 ref 127 gds 001505 constant label dcl 399 ref 376 l1 000073 constant label dcl 121 ref 117 step 001555 constant label dcl 405 ref 356 357 363 365 366 368 370 379 380 383 386 388 389 391 392 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2042 2134 1561 2052 Length 2644 1561 72 473 260 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME compile_entry 158 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME compile_entry 000100 p compile_entry 000102 ep compile_entry 000104 lp compile_entry 000106 cb compile_entry 000110 ent_pt compile_entry 000112 tree compile_entry 000114 q compile_entry 000116 pa compile_entry 000120 p1 compile_entry 000122 q1 compile_entry 000124 q2 compile_entry 000126 q3 compile_entry 000130 arg compile_entry 000134 desc_pt compile_entry 000136 desc_list_ptr compile_entry 000140 def_ptr compile_entry 000142 bi_size compile_entry 000143 gen_dummy compile_entry 000144 not_found compile_entry 000145 entry_type compile_entry 000146 i compile_entry 000147 n compile_entry 000150 m compile_entry 000151 om compile_entry 000152 text_pos compile_entry 000153 ed compile_entry 000154 num_descs compile_entry THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a r_ne_as alloc_char_temp unpk_to_pk call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. base_man$load_arg base_man$update_base c_a create_list error expmac expmac$fill_usage expmac$many expmac$zero generate_definition get_variable store THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cg_stat$cur_block cg_stat$cur_entry cg_stat$cur_statement cg_stat$def_base cg_stat$desc_list_ptr cg_stat$entry_arg cg_stat$last_def cg_stat$separate_static cg_stat$support cg_stat$text_base cg_stat$text_pos cg_stat$text_reloc_base cg_stat$validate_proc CONSTANTS 000000 aa 000000000470 000001 aa 000000000304 001560 aa 200000000000 000002 aa 514000000022 000003 aa 404000000003 000004 aa 524000000000 000005 aa 514000000003 000006 aa 404000000022 000007 aa 464000000000 000010 aa 077777000043 000011 aa 000001000000 000012 aa 163 171 155 142 symb 000013 aa 157 154 137 164 ol_t 000014 aa 141 142 154 145 able BEGIN PROCEDURE compile_entry ENTRY TO compile_entry STATEMENT 1 ON LINE 20 compile_entry: proc(pt,pos); 000015 at 000002000007 000016 ta 000006000000 000017 ta 000015000000 000020 da 000254300000 000021 aa 000240 6270 00 eax7 160 000022 aa 7 00034 3521 20 epp2 pr7|28,* 000023 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000024 aa 000004000000 000025 aa 000000000000 STATEMENT 1 ON LINE 103 cg_stat$cur_entry, p = pt; 000026 aa 6 00032 3735 20 epp7 pr6|26,* 000027 aa 7 00002 3715 20 epp5 pr7|2,* pt 000030 aa 5 00000 3715 20 epp5 pr5|0,* pt 000031 la 4 00016 6515 20 spri5 pr4|14,* cg_stat$cur_entry 000032 aa 6 00100 6515 00 spri5 pr6|64 p STATEMENT 1 ON LINE 104 ent_pt = p -> statement.labels -> list.element(2) -> reference.symbol; 000033 aa 5 00004 7631 00 lprp3 pr5|4 statement.labels 000034 aa 3 00002 7611 00 lprp1 pr3|2 list.element 000035 aa 1 00003 7631 00 lprp3 pr1|3 reference.symbol 000036 aa 6 00110 2535 00 spri3 pr6|72 ent_pt STATEMENT 1 ON LINE 105 tree = p -> statement.root; 000037 aa 5 00003 7611 00 lprp1 pr5|3 statement.root 000040 aa 6 00112 2515 00 spri1 pr6|74 tree STATEMENT 1 ON LINE 106 text_pos = cg_stat$text_pos; 000041 la 4 00040 2361 20 ldq pr4|32,* cg_stat$text_pos 000042 aa 6 00152 7561 00 stq pr6|106 text_pos STATEMENT 1 ON LINE 108 cb = cg_stat$cur_block; 000043 la 4 00024 3535 20 epp3 pr4|20,* cg_stat$cur_block 000044 aa 3 00000 3535 20 epp3 pr3|0,* cg_stat$cur_block 000045 aa 6 00106 2535 00 spri3 pr6|70 cb STATEMENT 1 ON LINE 110 ed = 0; 000046 aa 6 00153 4501 00 stz pr6|107 ed STATEMENT 1 ON LINE 111 num_descs = tree -> operator.number; 000047 aa 1 00000 2351 00 lda pr1|0 operator.number 000050 aa 000025 7350 00 als 21 000051 aa 000071 7330 00 lrs 57 000052 aa 6 00154 7561 00 stq pr6|108 num_descs STATEMENT 1 ON LINE 112 do i = 1 to num_descs; 000053 aa 6 00155 7561 00 stq pr6|109 000054 aa 000001 2360 07 ldq 1,dl 000055 aa 6 00146 7561 00 stq pr6|102 i 000056 aa 6 00146 2361 00 ldq pr6|102 i 000057 aa 6 00155 1161 00 cmpq pr6|109 000060 aa 000013 6054 04 tpnz 11,ic 000073 STATEMENT 1 ON LINE 113 if tree -> operand(i) -> reference.symbol -> symbol.star_extents | tree -> operand(i) -> reference.symbol -> symbol.exp_extents /* fortran */ then do; 000061 aa 6 00112 7671 66 lprp7 pr6|74,*ql operator.operand 000062 aa 7 00003 7651 00 lprp5 pr7|3 reference.symbol 000063 aa 5 00033 2351 00 lda pr5|27 symbol.exp_extents 000064 aa 024000 3150 03 cana 10240,du 000065 aa 000004 6000 04 tze 4,ic 000071 STATEMENT 1 ON LINE 116 ed = 1; 000066 aa 000001 2360 07 ldq 1,dl 000067 aa 6 00153 7561 00 stq pr6|107 ed STATEMENT 1 ON LINE 117 goto l1; 000070 aa 000003 7100 04 tra 3,ic 000073 STATEMENT 1 ON LINE 118 end; STATEMENT 1 ON LINE 119 end; 000071 aa 6 00146 0541 00 aos pr6|102 i 000072 aa 777764 7100 04 tra -12,ic 000056 STATEMENT 1 ON LINE 121 l1: if cb -> block.no_stack then do; 000073 aa 6 00106 3735 20 epp7 pr6|70,* cb 000074 aa 7 00024 2351 00 lda pr7|20 block.no_stack 000075 aa 020000 3150 07 cana 8192,dl 000076 aa 000062 6000 04 tze 50,ic 000160 STATEMENT 1 ON LINE 123 call expmac(quick_entry_mac + fixed(num_descs > 0,1) + ed, c_a((cb -> block.entry_info),4)); 000077 aa 6 00154 2361 00 ldq pr6|108 num_descs 000100 aa 0 00503 7001 00 tsx0 pr0|323 r_g_a 000101 aa 000107 7730 00 lrl 71 000102 aa 000554 0760 07 adq 364,dl 000103 aa 6 00153 0761 00 adq pr6|107 ed 000104 aa 6 00177 7561 00 stq pr6|127 000105 aa 7 00050 2361 00 ldq pr7|40 block.entry_info 000106 aa 6 00202 7561 00 stq pr6|130 000107 aa 000004 2360 07 ldq 4,dl 000110 aa 6 00203 7561 00 stq pr6|131 000111 aa 6 00202 3521 00 epp2 pr6|130 000112 aa 6 00206 2521 00 spri2 pr6|134 000113 aa 6 00203 3521 00 epp2 pr6|131 000114 aa 6 00210 2521 00 spri2 pr6|136 000115 aa 6 00200 3521 00 epp2 pr6|128 000116 aa 6 00212 2521 00 spri2 pr6|138 000117 aa 6 00204 6211 00 eax1 pr6|132 000120 aa 014000 4310 07 fld 6144,dl 000121 aa 6 00044 3701 20 epp4 pr6|36,* 000122 la 4 00062 3521 20 epp2 pr4|50,* c_a 000123 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 000124 aa 6 00177 3521 00 epp2 pr6|127 000125 aa 6 00206 2521 00 spri2 pr6|134 000126 aa 6 00200 3521 00 epp2 pr6|128 000127 aa 6 00210 2521 00 spri2 pr6|136 000130 aa 6 00204 6211 00 eax1 pr6|132 000131 aa 010000 4310 07 fld 4096,dl 000132 aa 6 00044 3701 20 epp4 pr6|36,* 000133 la 4 00066 3521 20 epp2 pr4|54,* expmac 000134 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 125 if num_descs > 0 then call base_man$update_base(6 + ed,cb,1); 000135 aa 6 00154 2361 00 ldq pr6|108 num_descs 000136 aa 000772 6044 04 tmoz 506,ic 001130 000137 aa 000006 2360 07 ldq 6,dl 000140 aa 6 00153 0761 00 adq pr6|107 ed 000141 aa 6 00177 7561 00 stq pr6|127 000142 aa 000001 2360 07 ldq 1,dl 000143 aa 6 00203 7561 00 stq pr6|131 000144 aa 6 00177 3521 00 epp2 pr6|127 000145 aa 6 00206 2521 00 spri2 pr6|134 000146 aa 6 00106 3521 00 epp2 pr6|70 cb 000147 aa 6 00210 2521 00 spri2 pr6|136 000150 aa 6 00203 3521 00 epp2 pr6|131 000151 aa 6 00212 2521 00 spri2 pr6|138 000152 aa 6 00204 6211 00 eax1 pr6|132 000153 aa 014000 4310 07 fld 6144,dl 000154 aa 6 00044 3701 20 epp4 pr6|36,* 000155 la 4 00052 3521 20 epp2 pr4|42,* base_man$update_base 000156 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 127 goto define; 000157 aa 000751 7100 04 tra 489,ic 001130 STATEMENT 1 ON LINE 128 end; STATEMENT 1 ON LINE 132 q = ent_pt -> symbol.token; 000160 aa 6 00110 3715 20 epp5 pr6|72,* ent_pt 000161 aa 5 00005 7651 00 lprp5 pr5|5 symbol.token 000162 aa 6 00114 6515 00 spri5 pr6|76 q STATEMENT 1 ON LINE 133 p = addrel(cg_stat$text_base,text_pos); 000163 aa 6 00152 2361 00 ldq pr6|106 text_pos 000164 aa 6 00044 3701 20 epp4 pr6|36,* 000165 la 4 00010 3521 20 epp2 pr4|8,* cg_stat$text_base 000166 aa 2 00000 3521 66 epp2 pr2|0,*ql cg_stat$text_base 000167 aa 000000 0520 03 adwp2 0,du 000170 aa 6 00100 2521 00 spri2 pr6|64 p STATEMENT 1 ON LINE 142 if ent_pt -> symbol.external then do; 000171 aa 6 00110 3535 20 epp3 pr6|72,* ent_pt 000172 aa 3 00032 2351 00 lda pr3|26 symbol.external 000173 aa 100000 3150 03 cana 32768,du 000174 aa 000362 6000 04 tze 242,ic 000556 STATEMENT 1 ON LINE 144 if cg_stat$validate_proc = null then n = 0; 000175 la 4 00014 2371 20 ldaq pr4|12,* cg_stat$validate_proc 000176 aa 777612 6770 04 eraq -118,ic 000010 = 077777000043 000001000000 000177 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000200 aa 000003 6010 04 tnz 3,ic 000203 000201 aa 6 00147 4501 00 stz pr6|103 n 000202 aa 000003 7100 04 tra 3,ic 000205 STATEMENT 2 ON LINE 144 else n = 4; 000203 aa 000004 2360 07 ldq 4,dl 000204 aa 6 00147 7561 00 stq pr6|103 n STATEMENT 1 ON LINE 146 if num_descs = 0 then do; 000205 aa 6 00154 2361 00 ldq pr6|108 num_descs 000206 aa 000013 6010 04 tnz 11,ic 000221 STATEMENT 1 ON LINE 151 p = addrel(p,-1); 000207 aa 777777 0520 03 adwp2 262143,du 000210 aa 6 00100 2521 00 spri2 pr6|64 p STATEMENT 1 ON LINE 152 ep = addrel(cg_stat$text_reloc_base,text_pos - 1); 000211 aa 6 00152 2361 00 ldq pr6|106 text_pos 000212 aa 000001 1760 07 sbq 1,dl 000213 la 4 00026 3515 20 epp1 pr4|22,* cg_stat$text_reloc_base 000214 aa 1 00000 3515 66 epp1 pr1|0,*ql cg_stat$text_reloc_base 000215 aa 000000 0510 03 adwp1 0,du 000216 aa 6 00102 2515 00 spri1 pr6|66 ep STATEMENT 1 ON LINE 153 text_pos = text_pos + 1; 000217 aa 6 00152 0541 00 aos pr6|106 text_pos STATEMENT 1 ON LINE 154 end; 000220 aa 000222 7100 04 tra 146,ic 000442 STATEMENT 1 ON LINE 156 else do; STATEMENT 1 ON LINE 160 q1 = p; 000221 aa 6 00122 2521 00 spri2 pr6|82 q1 STATEMENT 1 ON LINE 161 q2 = addrel(cg_stat$text_reloc_base,text_pos); 000222 aa 6 00152 2361 00 ldq pr6|106 text_pos 000223 la 4 00026 3515 20 epp1 pr4|22,* cg_stat$text_reloc_base 000224 aa 1 00000 3515 66 epp1 pr1|0,*ql cg_stat$text_reloc_base 000225 aa 000000 0510 03 adwp1 0,du 000226 aa 6 00124 2515 00 spri1 pr6|84 q2 STATEMENT 1 ON LINE 163 q1 -> parm_desc_ptrs.n_args = fixed(num_descs,18); 000227 aa 6 00154 2361 00 ldq pr6|108 num_descs 000230 aa 000066 7370 00 lls 54 000231 aa 6 00122 3735 20 epp7 pr6|82,* parm_desc_ptrs.n_args 000232 aa 7 00000 5511 60 stba pr7|0,60 parm_desc_ptrs.n_args STATEMENT 1 ON LINE 167 do i = 1 to num_descs; 000233 aa 6 00154 2361 00 ldq pr6|108 num_descs 000234 aa 6 00156 7561 00 stq pr6|110 000235 aa 000001 2360 07 ldq 1,dl 000236 aa 6 00146 7561 00 stq pr6|102 i 000237 aa 000000 0110 03 nop 0,du 000240 aa 6 00146 2361 00 ldq pr6|102 i 000241 aa 6 00156 1161 00 cmpq pr6|110 000242 aa 000040 6054 04 tpnz 32,ic 000302 STATEMENT 1 ON LINE 168 desc_pt = tree -> operand(i) -> reference.symbol -> symbol.descriptor -> reference.symbol; 000243 aa 6 00112 7671 66 lprp7 pr6|74,*ql operator.operand 000244 aa 7 00003 7651 00 lprp5 pr7|3 reference.symbol 000245 aa 5 00013 7631 00 lprp3 pr5|11 symbol.descriptor 000246 aa 3 00003 7611 00 lprp1 pr3|3 reference.symbol 000247 aa 6 00134 2515 00 spri1 pr6|92 desc_pt STATEMENT 1 ON LINE 170 if ^ desc_pt -> symbol.constant then desc_pt = desc_pt -> symbol.descriptor; 000250 aa 1 00032 2351 00 lda pr1|26 symbol.constant 000251 aa 000002 3150 03 cana 2,du 000252 aa 000003 6010 04 tnz 3,ic 000255 000253 aa 1 00013 7631 00 lprp3 pr1|11 symbol.descriptor 000254 aa 6 00134 2535 00 spri3 pr6|92 desc_pt STATEMENT 1 ON LINE 171 q1 -> parm_desc_ptrs.descriptor_relp(i) = bit(fixed(desc_pt -> symbol.location,18),18); 000255 aa 000022 4020 07 mpy 18,dl 000256 aa 6 00134 3535 20 epp3 pr6|92,* desc_pt 000257 aa 3 00001 2351 00 lda pr3|1 symbol.location 000260 aa 6 00203 7561 00 stq pr6|131 000261 aa 000066 7730 00 lrl 54 000262 aa 000003 6050 04 tpl 3,ic 000265 000263 aa 0 00110 6761 00 erq pr0|72 = 777777777777 000264 aa 000001 0760 07 adq 1,dl 000265 aa 000066 7370 00 lls 54 000266 aa 6 00056 7551 00 sta pr6|46 000267 aa 6 00203 2361 00 ldq pr6|131 000270 aa 6 00122 3515 20 epp1 pr6|82,* q1 000271 aa 003 106 060 500 csl (pr),(pr,ql),fill(0),bool(move) 000272 aa 6 00056 00 0022 descb pr6|46,18 000273 aa 1 00000 00 0022 descb pr1|0,18 parm_desc_ptrs.descriptor_relp STATEMENT 1 ON LINE 172 q2 -> text_desc_reloc.reloc(i) = rc_t; 000274 aa 6 00124 3715 20 epp5 pr6|84,* q2 000275 aa 003 106 060 404 csl (ic),(pr,ql),fill(0),bool(move) 000276 aa 001263 00 0006 descb 691,6 001560 = 200000000000 000277 aa 5 00000 23 0006 descb pr5|0(12),6 text_desc_reloc.reloc STATEMENT 1 ON LINE 173 end; 000300 aa 6 00146 0541 00 aos pr6|102 i 000301 aa 777737 7100 04 tra -33,ic 000240 STATEMENT 1 ON LINE 175 bi_size = (num_descs + 1) * 18; 000302 aa 6 00154 2361 00 ldq pr6|108 num_descs 000303 aa 000001 0760 07 adq 1,dl 000304 aa 000022 4020 07 mpy 18,dl 000305 aa 6 00142 7561 00 stq pr6|98 bi_size STATEMENT 1 ON LINE 179 not_found = "1"b; 000306 aa 400000 2350 03 lda 131072,du 000307 aa 6 00144 7551 00 sta pr6|100 not_found STATEMENT 1 ON LINE 180 lp = cg_stat$desc_list_ptr; 000310 aa 6 00044 3701 20 epp4 pr6|36,* 000311 la 4 00020 3735 20 epp7 pr4|16,* cg_stat$desc_list_ptr 000312 aa 7 00000 3735 20 epp7 pr7|0,* cg_stat$desc_list_ptr 000313 aa 6 00104 6535 00 spri7 pr6|68 lp STATEMENT 1 ON LINE 182 do while(lp ^= null & not_found); 000314 aa 6 00104 2371 00 ldaq pr6|68 lp 000315 aa 777473 6770 04 eraq -197,ic 000010 = 077777000043 000001000000 000316 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000317 aa 000021 6000 04 tze 17,ic 000340 000320 aa 6 00144 2351 00 lda pr6|100 not_found 000321 aa 000017 6000 04 tze 15,ic 000340 STATEMENT 1 ON LINE 183 if q1 -> bit_image = lp -> list.element(2) -> bit_image then not_found = "0"b; 000322 aa 6 00104 3735 20 epp7 pr6|68,* lp 000323 aa 7 00002 7671 00 lprp7 pr7|2 list.element 000324 aa 6 00122 3715 20 epp5 pr6|82,* q1 000325 aa 6 00142 7271 00 lxl7 pr6|98 bi_size 000326 aa 000 140 066 540 cmpb (pr,rl),(pr,rl),fill(0) 000327 aa 5 00000 00 0017 descb pr5|0,x7 bit_image 000330 aa 7 00000 00 0017 descb pr7|0,x7 bit_image 000331 aa 000003 6010 04 tnz 3,ic 000334 000332 aa 6 00144 4501 00 stz pr6|100 not_found 000333 aa 777761 7100 04 tra -15,ic 000314 STATEMENT 1 ON LINE 185 else lp = lp -> list.element(1); 000334 aa 6 00104 3535 20 epp3 pr6|68,* lp 000335 aa 3 00001 7631 00 lprp3 pr3|1 list.element 000336 aa 6 00104 2535 00 spri3 pr6|68 lp STATEMENT 1 ON LINE 186 end; 000337 aa 777755 7100 04 tra -19,ic 000314 STATEMENT 1 ON LINE 188 if not_found then do; 000340 aa 6 00144 2351 00 lda pr6|100 not_found 000341 aa 000042 6000 04 tze 34,ic 000403 STATEMENT 1 ON LINE 193 desc_list_ptr = create_list(2); 000342 aa 000002 2360 07 ldq 2,dl 000343 aa 6 00203 7561 00 stq pr6|131 000344 aa 6 00203 3521 00 epp2 pr6|131 000345 aa 6 00206 2521 00 spri2 pr6|134 000346 aa 6 00136 3521 00 epp2 pr6|94 desc_list_ptr 000347 aa 6 00210 2521 00 spri2 pr6|136 000350 aa 6 00204 6211 00 eax1 pr6|132 000351 aa 010000 4310 07 fld 4096,dl 000352 aa 6 00044 3701 20 epp4 pr6|36,* 000353 la 4 00056 3521 20 epp2 pr4|46,* create_list 000354 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 194 desc_list_ptr -> list.element(1) = cg_stat$desc_list_ptr; 000355 aa 6 00044 3701 20 epp4 pr6|36,* 000356 la 4 00020 3735 20 epp7 pr4|16,* cg_stat$desc_list_ptr 000357 aa 7 00000 3735 20 epp7 pr7|0,* cg_stat$desc_list_ptr 000360 aa 6 00136 3715 20 epp5 pr6|94,* desc_list_ptr 000361 aa 5 00001 5471 00 sprp7 pr5|1 list.element STATEMENT 1 ON LINE 195 cg_stat$desc_list_ptr = desc_list_ptr; 000362 la 4 00020 6515 20 spri5 pr4|16,* cg_stat$desc_list_ptr STATEMENT 1 ON LINE 196 desc_list_ptr -> list.element(2) = q1; 000363 aa 6 00122 3735 20 epp7 pr6|82,* q1 000364 aa 5 00002 5471 00 sprp7 pr5|2 list.element STATEMENT 1 ON LINE 198 text_pos = text_pos + size(q1 -> parm_desc_ptrs); 000365 aa 6 00154 2361 00 ldq pr6|108 num_descs 000366 aa 000022 4020 07 mpy 18,dl 000367 aa 000022 0760 07 adq 18,dl 000370 aa 000043 0760 07 adq 35,dl 000371 aa 000044 5060 07 div 36,dl 000372 aa 6 00152 0561 00 asq pr6|106 text_pos STATEMENT 1 ON LINE 199 p = addrel(cg_stat$text_base,text_pos); 000373 aa 6 00152 2361 00 ldq pr6|106 text_pos 000374 la 4 00010 3521 20 epp2 pr4|8,* cg_stat$text_base 000375 aa 2 00000 3521 66 epp2 pr2|0,*ql cg_stat$text_base 000376 aa 000000 0520 03 adwp2 0,du 000377 aa 6 00100 2521 00 spri2 pr6|64 p STATEMENT 1 ON LINE 200 p -> entry_sequence.descr_relp_offset = rel(q1); 000400 aa 7 00000 6351 00 eaa pr7|0 q1 000401 aa 2 00000 5511 60 stba pr2|0,60 entry_sequence.descr_relp_offset STATEMENT 1 ON LINE 201 end; 000402 aa 000023 7100 04 tra 19,ic 000425 STATEMENT 1 ON LINE 203 else do; STATEMENT 1 ON LINE 207 q1 -> bit_image = "0"b; 000403 aa 6 00142 2361 00 ldq pr6|98 bi_size 000404 aa 000010 0760 07 adq 8,dl 000405 aa 000011 5060 07 div 9,dl 000406 aa 6 00122 3735 20 epp7 pr6|82,* q1 000407 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 000410 aa 000000 00 0000 desc9a 0,0 000411 aa 7 00000 00 0006 desc9a pr7|0,ql bit_image STATEMENT 1 ON LINE 208 q2 -> bit_image = "0"b; 000412 aa 6 00142 2361 00 ldq pr6|98 bi_size 000413 aa 000010 0760 07 adq 8,dl 000414 aa 000011 5060 07 div 9,dl 000415 aa 6 00124 3715 20 epp5 pr6|84,* q2 000416 aa 000 140 100 400 mlr (),(pr,rl),fill(000) 000417 aa 000000 00 0000 desc9a 0,0 000420 aa 5 00000 00 0006 desc9a pr5|0,ql bit_image STATEMENT 1 ON LINE 209 q1 -> entry_sequence.descr_relp_offset = rel(lp -> list.element(2)); 000421 aa 6 00104 3535 20 epp3 pr6|68,* lp 000422 aa 3 00002 2351 00 lda pr3|2 list.element 000423 aa 000022 7350 00 als 18 000424 aa 7 00000 5511 60 stba pr7|0,60 entry_sequence.descr_relp_offset desc9a pr7|4,ql token.string 000532 aa 777262 00 0014 desc9a -334,12 000012 = 163171155142 000533 aa 000017 6010 04 tnz 15,ic 000552 000534 aa 000554 2360 07 ldq 364,dl 000535 aa 6 00203 7561 00 stq pr6|131 000536 aa 777252 3714 24 epp5 -342,ic* 000537 aa 6 00200 6515 00 spri5 pr6|128 000540 aa 6 00203 3521 00 epp2 pr6|131 000541 aa 6 00206 2521 00 spri2 pr6|134 000542 la 4 00030 3521 20 epp2 pr4|24,* cg_stat$cur_statement 000543 aa 6 00210 2521 00 spri2 pr6|136 000544 aa 6 00200 3521 00 epp2 pr6|128 000545 aa 6 00212 2521 00 spri2 pr6|138 000546 aa 6 00204 6211 00 eax1 pr6|132 000547 aa 014000 4310 07 fld 6144,dl 000550 la 4 00070 3521 20 epp2 pr4|56,* error 000551 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 227 gen_dummy = m ^= 0; 000552 aa 6 00150 2361 00 ldq pr6|104 m 000553 aa 0 00515 7001 00 tsx0 pr0|333 r_ne_as 000554 aa 6 00143 7551 00 sta pr6|99 gen_dummy STATEMENT 1 ON LINE 229 end; 000555 aa 000016 7100 04 tra 14,ic 000573 STATEMENT 1 ON LINE 231 else do; STATEMENT 1 ON LINE 235 n = 2; 000556 aa 000002 2360 07 ldq 2,dl 000557 aa 6 00147 7561 00 stq pr6|103 n STATEMENT 1 ON LINE 236 p = addrel(p,-1); 000560 aa 777777 0520 03 adwp2 262143,du 000561 aa 6 00100 2521 00 spri2 pr6|64 p STATEMENT 1 ON LINE 237 ep = addrel(cg_stat$text_reloc_base,text_pos-1); 000562 aa 6 00152 2361 00 ldq pr6|106 text_pos 000563 aa 000001 1760 07 sbq 1,dl 000564 la 4 00026 3515 20 epp1 pr4|22,* cg_stat$text_reloc_base 000565 aa 1 00000 3515 66 epp1 pr1|0,*ql cg_stat$text_reloc_base 000566 aa 000000 0510 03 adwp1 0,du 000567 aa 6 00102 2515 00 spri1 pr6|66 ep STATEMENT 1 ON LINE 238 text_pos = text_pos + 1; 000570 aa 6 00152 0541 00 aos pr6|106 text_pos STATEMENT 1 ON LINE 239 gen_dummy = "1"b; 000571 aa 400000 2350 03 lda 131072,du 000572 aa 6 00143 7551 00 sta pr6|99 gen_dummy STATEMENT 1 ON LINE 240 end; STATEMENT 1 ON LINE 242 if gen_dummy then do; 000573 aa 000044 6000 04 tze 36,ic 000637 STATEMENT 1 ON LINE 248 call generate_definition(q -> token.string,0,bit(text_pos,18)); 000574 aa 6 00114 3735 20 epp7 pr6|76,* q 000575 aa 7 00003 2361 00 ldq pr7|3 token.size 000576 aa 524000 2760 03 orq 174080,du 000577 aa 6 00203 7561 00 stq pr6|131 000600 aa 6 00214 4501 00 stz pr6|140 000601 aa 6 00152 2351 00 lda pr6|106 text_pos 000602 aa 000002 6050 04 tpl 2,ic 000604 000603 aa 000000 5310 00 neg 0 000604 aa 000022 7350 00 als 18 000605 aa 6 00202 7551 00 sta pr6|130 000606 aa 7 00004 3521 00 epp2 pr7|4 token.string 000607 aa 6 00220 2521 00 spri2 pr6|144 000610 aa 6 00214 3521 00 epp2 pr6|140 000611 aa 6 00222 2521 00 spri2 pr6|146 000612 aa 6 00202 3521 00 epp2 pr6|130 000613 aa 6 00224 2521 00 spri2 pr6|148 000614 aa 6 00203 3521 00 epp2 pr6|131 000615 aa 6 00226 2521 00 spri2 pr6|150 000616 aa 777165 3520 04 epp2 -395,ic 000003 = 404000000003 000617 aa 6 00230 2521 00 spri2 pr6|152 000620 aa 777162 3520 04 epp2 -398,ic 000002 = 514000000022 000621 aa 6 00232 2521 00 spri2 pr6|154 000622 aa 6 00216 6211 00 eax1 pr6|142 000623 aa 014000 4310 07 fld 6144,dl 000624 aa 6 00044 3701 20 epp4 pr6|36,* 000625 la 4 00064 3521 20 epp2 pr4|52,* generate_definition 000626 aa 0 00622 7001 00 tsx0 pr0|402 call_ext_out_desc STATEMENT 1 ON LINE 250 def_ptr = addrel(cg_stat$def_base,cg_stat$last_def); 000627 aa 6 00044 3701 20 epp4 pr6|36,* 000630 la 4 00032 2351 20 lda pr4|26,* cg_stat$last_def 000631 la 4 00012 3521 20 epp2 pr4|10,* cg_stat$def_base 000632 aa 2 00000 3521 61 epp2 pr2|0,*au cg_stat$def_base 000633 aa 000000 0520 03 adwp2 0,du 000634 aa 6 00140 2521 00 spri2 pr6|96 def_ptr STATEMENT 1 ON LINE 251 def_ptr -> definition.ignore = "1"b; 000635 aa 200000 2350 07 lda 65536,dl 000636 aa 2 00001 2551 00 orsa pr2|1 definition.ignore STATEMENT 1 ON LINE 252 end; STATEMENT 1 ON LINE 254 def_ptr -> definition.retain = "1"b; 000637 aa 040000 2350 07 lda 16384,dl 000640 aa 6 00140 3735 20 epp7 pr6|96,* def_ptr 000641 aa 7 00001 2551 00 orsa pr7|1 definition.retain STATEMENT 1 ON LINE 255 p -> entry_sequence.revision_1 = "1"b; 000642 aa 200000 2350 07 lda 65536,dl 000643 aa 6 00100 3715 20 epp5 pr6|64,* p 000644 aa 5 00001 2551 00 orsa pr5|1 entry_sequence.revision_1 STATEMENT 1 ON LINE 256 p -> entry_sequence.variable = ent_pt -> symbol.variable_arg_list; 000645 aa 6 00110 3535 20 epp3 pr6|72,* ent_pt 000646 aa 3 00032 2351 00 lda pr3|26 symbol.variable_arg_list 000647 aa 000016 7710 00 arl 14 000650 aa 5 00001 6751 00 era pr5|1 entry_sequence.variable 000651 aa 040000 3750 07 ana 16384,dl 000652 aa 5 00001 6551 00 ersa pr5|1 entry_sequence.variable STATEMENT 1 ON LINE 257 p -> entry_sequence.function = ent_pt -> symbol.returns; 000653 aa 3 00031 2351 00 lda pr3|25 symbol.returns 000654 aa 000015 7350 00 als 13 000655 aa 5 00001 6751 00 era pr5|1 entry_sequence.function 000656 aa 020000 3750 07 ana 8192,dl 000657 aa 5 00001 6551 00 ersa pr5|1 entry_sequence.function STATEMENT 1 ON LINE 258 p -> entry_sequence.def_relp = cg_stat$last_def; 000660 aa 6 00044 3701 20 epp4 pr6|36,* 000661 la 4 00032 2351 20 lda pr4|26,* cg_stat$last_def 000662 aa 5 00001 5511 60 stba pr5|1,60 entry_sequence.def_relp STATEMENT 1 ON LINE 259 ep -> reloc(1).left = rc_dp; 000663 aa 000025 2350 03 lda 21,du 000664 aa 6 00102 3515 20 epp1 pr6|66,* ep 000665 aa 1 00001 7511 10 stca pr1|1,10 reloc.left STATEMENT 1 ON LINE 263 cg_stat$text_pos = text_pos; 000666 aa 6 00152 2361 00 ldq pr6|106 text_pos 000667 la 4 00040 7561 20 stq pr4|32,* cg_stat$text_pos STATEMENT 1 ON LINE 265 if cg_stat$separate_static then entry_type = ss_ext_entry; 000670 la 4 00036 2351 20 lda pr4|30,* cg_stat$separate_static 000671 aa 000004 6000 04 tze 4,ic 000675 000672 aa 001206 2360 07 ldq 646,dl 000673 aa 6 00145 7561 00 stq pr6|101 entry_type 000674 aa 000003 7100 04 tra 3,ic 000677 STATEMENT 1 ON LINE 267 else entry_type = ext_entry; 000675 aa 001122 2360 07 ldq 594,dl 000676 aa 6 00145 7561 00 stq pr6|101 entry_type STATEMENT 1 ON LINE 269 if cg_stat$entry_arg = null then call expmac$zero(entry_type + n + ed); 000677 la 4 00022 2371 20 ldaq pr4|18,* cg_stat$entry_arg 000700 aa 777110 6770 04 eraq -440,ic 000010 = 077777000043 000001000000 000701 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 000702 aa 000014 6010 04 tnz 12,ic 000716 000703 aa 6 00145 2361 00 ldq pr6|101 entry_type 000704 aa 6 00147 0761 00 adq pr6|103 n 000705 aa 6 00153 0761 00 adq pr6|107 ed 000706 aa 6 00203 7561 00 stq pr6|131 000707 aa 6 00203 3521 00 epp2 pr6|131 000710 aa 6 00206 2521 00 spri2 pr6|134 000711 aa 6 00204 6211 00 eax1 pr6|132 000712 aa 004000 4310 07 fld 2048,dl 000713 la 4 00050 3521 20 epp2 pr4|40,* expmac$zero 000714 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 000715 aa 000051 7100 04 tra 41,ic 000766 STATEMENT 1 ON LINE 270 else do; STATEMENT 1 ON LINE 271 if cg_stat$separate_static then om = ss_op_offset; 000716 la 4 00036 2351 20 lda pr4|30,* cg_stat$separate_static 000717 aa 000004 6000 04 tze 4,ic 000723 000720 aa 000306 2360 07 ldq 198,dl 000721 aa 6 00151 7561 00 stq pr6|105 om 000722 aa 000002 7100 04 tra 2,ic 000724 STATEMENT 1 ON LINE 273 else om = 0; 000723 aa 6 00151 4501 00 stz pr6|105 om STATEMENT 1 ON LINE 274 arg(1) = c_a(om + n + ed,11); 000724 aa 6 00151 2361 00 ldq pr6|105 om 000725 aa 6 00147 0761 00 adq pr6|103 n 000726 aa 6 00153 0761 00 adq pr6|107 ed 000727 aa 6 00203 7561 00 stq pr6|131 000730 aa 000013 2360 07 ldq 11,dl 000731 aa 6 00202 7561 00 stq pr6|130 000732 aa 6 00203 3521 00 epp2 pr6|131 000733 aa 6 00206 2521 00 spri2 pr6|134 000734 aa 6 00202 3521 00 epp2 pr6|130 000735 aa 6 00210 2521 00 spri2 pr6|136 000736 aa 6 00130 3521 00 epp2 pr6|88 arg 000737 aa 6 00212 2521 00 spri2 pr6|138 000740 aa 6 00204 6211 00 eax1 pr6|132 000741 aa 014000 4310 07 fld 6144,dl 000742 la 4 00062 3521 20 epp2 pr4|50,* c_a 000743 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 275 arg(2) = cg_stat$entry_arg; 000744 aa 6 00044 3701 20 epp4 pr6|36,* 000745 la 4 00022 3735 20 epp7 pr4|18,* cg_stat$entry_arg 000746 aa 7 00000 3735 20 epp7 pr7|0,* cg_stat$entry_arg 000747 aa 6 00132 6535 00 spri7 pr6|90 arg STATEMENT 1 ON LINE 276 call expmac$many(entry_macro,addr(arg),2); 000750 aa 6 00130 3735 00 epp7 pr6|88 arg 000751 aa 6 00200 6535 00 spri7 pr6|128 000752 aa 000002 2360 07 ldq 2,dl 000753 aa 6 00202 7561 00 stq pr6|130 000754 aa 777025 3520 04 epp2 -491,ic 000001 = 000000000304 000755 aa 6 00206 2521 00 spri2 pr6|134 000756 aa 6 00200 3521 00 epp2 pr6|128 000757 aa 6 00210 2521 00 spri2 pr6|136 000760 aa 6 00202 3521 00 epp2 pr6|130 000761 aa 6 00212 2521 00 spri2 pr6|138 000762 aa 6 00204 6211 00 eax1 pr6|132 000763 aa 014000 4310 07 fld 6144,dl 000764 la 4 00046 3521 20 epp2 pr4|38,* expmac$many 000765 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 277 end; STATEMENT 1 ON LINE 281 p = addrel(cg_stat$text_base,cg_stat$text_pos); 000766 aa 6 00044 3701 20 epp4 pr6|36,* 000767 la 4 00040 2361 20 ldq pr4|32,* cg_stat$text_pos 000770 la 4 00010 3521 20 epp2 pr4|8,* cg_stat$text_base 000771 aa 2 00000 3521 66 epp2 pr2|0,*ql cg_stat$text_base 000772 aa 000000 0520 03 adwp2 0,du 000773 aa 6 00100 2521 00 spri2 pr6|64 p STATEMENT 1 ON LINE 282 p -> entry_info.num_args = bit(fixed(num_descs,17),17); 000774 aa 6 00154 2351 00 lda pr6|108 num_descs 000775 aa 000002 6050 04 tpl 2,ic 000777 000776 aa 000000 5310 00 neg 0 000777 aa 000023 7350 00 als 19 001000 aa 2 00000 6751 00 era pr2|0 entry_info.num_args 001001 aa 0 00042 3751 00 ana pr0|34 = 777776000000 001002 aa 2 00000 6551 00 ersa pr2|0 entry_info.num_args STATEMENT 1 ON LINE 283 pos = cg_stat$text_pos + 1; 001003 aa 000001 0760 07 adq 1,dl 001004 aa 6 00032 3735 20 epp7 pr6|26,* 001005 aa 7 00004 7561 20 stq pr7|4,* pos STATEMENT 1 ON LINE 284 cg_stat$text_pos = cg_stat$text_pos + 2; 001006 aa 000002 2360 07 ldq 2,dl 001007 la 4 00040 0561 20 asq pr4|32,* cg_stat$text_pos STATEMENT 1 ON LINE 288 if n = 4 then do; 001010 aa 6 00147 2361 00 ldq pr6|103 n 001011 aa 000004 1160 07 cmpq 4,dl 001012 aa 000036 6010 04 tnz 30,ic 001050 STATEMENT 1 ON LINE 290 p = c_a((cg_stat$validate_proc -> symbol.location),2); 001013 la 4 00014 3715 20 epp5 pr4|12,* cg_stat$validate_proc 001014 aa 5 00000 3715 20 epp5 pr5|0,* cg_stat$validate_proc 001015 aa 5 00001 2351 00 lda pr5|1 symbol.location 001016 aa 000066 7730 00 lrl 54 001017 aa 6 00202 7561 00 stq pr6|130 001020 aa 000002 2360 07 ldq 2,dl 001021 aa 6 00203 7561 00 stq pr6|131 001022 aa 6 00202 3521 00 epp2 pr6|130 001023 aa 6 00206 2521 00 spri2 pr6|134 001024 aa 6 00203 3521 00 epp2 pr6|131 001025 aa 6 00210 2521 00 spri2 pr6|136 001026 aa 6 00100 3521 00 epp2 pr6|64 p 001027 aa 6 00212 2521 00 spri2 pr6|138 001030 aa 6 00204 6211 00 eax1 pr6|132 001031 aa 014000 4310 07 fld 6144,dl 001032 la 4 00062 3521 20 epp2 pr4|50,* c_a 001033 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 291 p -> reference.relocation = rc_lp18; 001034 aa 002200 2350 07 lda 1152,dl 001035 aa 6 00100 3735 20 epp7 pr6|64,* p 001036 aa 7 00012 7511 03 stca pr7|10,03 reference.relocation STATEMENT 1 ON LINE 292 call expmac(nop_mac,p); 001037 aa 776741 3symbol.allocated STATEMENT 1 ON LINE 324 n = 2 * tree -> operator.number; 001153 aa 6 00112 2351 20 lda pr6|74,* operator.number 001154 aa 000025 7350 00 als 21 001155 aa 000071 7330 00 lrs 57 001156 aa 000001 7360 00 qls 1 001157 aa 6 00147 7561 00 stq pr6|103 n STATEMENT 1 ON LINE 325 p = cb -> block.o_and_s; 001160 aa 6 00106 3715 20 epp5 pr6|70,* cb 001161 aa 5 00040 3715 20 epp5 pr5|32,* block.o_and_s 001162 aa 6 00100 6515 00 spri5 pr6|64 p STATEMENT 1 ON LINE 327 if p = null then cb -> block.o_and_s, p = create_list(n); 001163 aa 6 00100 2371 00 ldaq pr6|64 p 001164 aa 776624 6770 04 eraq -620,ic 000010 = 077777000043 000001000000 001165 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001166 aa 000017 6010 04 tnz 15,ic 001205 001167 aa 6 00147 3521 00 epp2 pr6|103 n 001170 aa 6 00206 2521 00 spri2 pr6|134 001171 aa 6 00200 3521 00 epp2 pr6|128 001172 aa 6 00210 2521 00 spri2 pr6|136 001173 aa 6 00204 6211 00 eax1 pr6|132 001174 aa 010000 4310 07 fld 4096,dl 001175 aa 6 00044 3701 20 epp4 pr6|36,* 001176 la 4 00056 3521 20 epp2 pr4|46,* create_list 001177 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 001200 aa 6 00200 3735 20 epp7 pr6|128,* 001201 aa 6 00106 3715 20 epp5 pr6|70,* cb 001202 aa 5 00040 6535 00 spri7 pr5|32 block.o_and_s 001203 aa 6 00100 6535 00 spri7 pr6|64 p 001204 aa 000042 7100 04 tra 34,ic 001246 STATEMENT 1 ON LINE 328 else if n > p -> list.number then do; 001205 aa 5 00000 2351 00 lda pr5|0 list.number 001206 aa 000025 7350 00 als 21 001207 aa 000071 7330 00 lrs 57 001210 aa 6 00147 1161 00 cmpq pr6|103 n 001211 aa 000035 6050 04 tpl 29,ic 001246 STATEMENT 1 ON LINE 330 q = create_list(n); 001212 aa 6 00147 3521 00 epp2 pr6|103 n 001213 aa 6 00206 2521 00 spri2 pr6|134 001214 aa 6 00114 3521 00 epp2 pr6|76 q 001215 aa 6 00210 2521 00 spri2 pr6|136 001216 aa 6 00204 6211 00 eax1 pr6|132 001217 aa 010000 4310 07 fld 4096,dl 001220 aa 6 00044 3701 20 epp4 pr6|36,* 001221 la 4 00056 3521 20 epp2 pr4|46,* create_list 001222 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 331 do i = 1 to p -> list.number; 001223 aa 6 00100 2351 20 lda pr6|64,* list.number 001224 aa 000025 7350 00 als 21 001225 aa 000071 7330 00 lrs 57 001226 aa 6 00157 7561 00 stq pr6|111 001227 aa 000001 2360 07 ldq 1,dl 001230 aa 6 00146 7561 00 stq pr6|102 i 001231 aa 000000 0110 03 nop 0,du 001232 aa 6 00146 2361 00 ldq pr6|102 i 001233 aa 6 00157 1161 00 cmpq pr6|111 001234 aa 000006 6054 04 tpnz 6,ic 001242 STATEMENT 1 ON LINE 332 q -> element(i) = p -> element(i); 001235 aa 6 00100 2361 66 ldq pr6|64,*ql list.element 001236 aa 6 00146 7271 00 lxl7 pr6|102 i 001237 aa 6 00114 7561 77 stq pr6|76,*7 list.element STATEMENT 1 ON LINE 333 end; 001240 aa 6 00146 0541 00 aos pr6|102 i 001241 aa 777771 7100 04 tra -7,ic 001232 STATEMENT 1 ON LINE 334 cb -> block.o_and_s, p = q; 001242 aa 6 00114 3735 20 epp7 pr6|76,* q 001243 aa 6 00106 3715 20 epp5 pr6|70,* cb 001244 aa 5 00040 6535 00 spri7 pr5|32 block.o_and_s 001245 aa 6 00100 6535 00 spri7 pr6|64 p STATEMENT 1 ON LINE 335 end; STATEMENT 1 ON LINE 340 m = tree -> operator.number; 001246 aa 6 00112 2351 20 lda pr6|74,* operator.number 001247 aa 000025 7350 00 als 21 001250 aa 000071 7330 00 lrs 57 001251 aa 6 00150 7561 00 stq pr6|104 m STATEMENT 1 ON LINE 341 pa = ent_pt -> symbol.dcl_size; 001252 aa 6 00110 3735 20 epp7 pr6|72,* ent_pt 001253 aa 7 00024 7671 00 lprp7 pr7|20 symbol.dcl_size 001254 aa 6 00116 6535 00 spri7 pr6|78 pa STATEMENT 1 ON LINE 342 if pa ^= null then if pa -> symbol.star_extents then m = m - 1; 001255 aa 6 00116 2371 00 ldaq pr6|78 pa 001256 aa 776532 6770 04 eraq -678,ic 000010 = 077777000043 000001000000 001257 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001260 aa 000006 6000 04 tze 6,ic 001266 001261 aa 7 00033 2351 00 lda pr7|27 symbol.star_extents 001262 aa 004000 3150 03 cana 2048,du 001263 aa 000003 6000 04 tze 3,ic 001266 001264 aa 000001 3360 07 lcq 1,dl 001265 aa 6 00150 0561 00 asq pr6|104 m STATEMENT 1 ON LINE 346 pa = c_a(0,4); 001266 aa 6 00202 4501 00 stz pr6|130 001267 aa 000004 2360 07 ldq 4,dl 001270 aa 6 00203 7561 00 stq pr6|131 001271 aa 6 00202 3521 00 epp2 pr6|130 001272 aa 6 00206 2521 00 spri2 pr6|134 001273 aa 6 00203 3521 00 epp2 pr6|131 001274 aa 6 00210 2521 00 spri2 pr6|136 001275 aa 6 00116 3521 00 epp2 pr6|78 pa 001276 aa 6 00212 2521 00 spri2 pr6|138 001277 aa 6 00204 6211 00 eax1 pr6|132 001300 aa 014000 4310 07 fld 6144,dl 001301 aa 6 00044 3701 20 epp4 pr6|36,* 001302 la 4 00062 3521 20 epp2 pr4|50,* c_a 001303 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 350 do i = 1 to m; 001304 aa 6 00150 2361 00 ldq pr6|104 m 001305 aa 6 00176 7561 00 stq pr6|126 001306 aa 000001 2360 07 ldq 1,dl 001307 aa 6 00146 7561 00 stq pr6|102 i 001310 aa 6 00146 2361 00 ldq pr6|102 i 001311 aa 6 00176 1161 00 cmpq pr6|126 001312 aa 000245 6054 04 tpnz 165,ic 001557 STATEMENT 1 ON LINE 351 q = tree -> operand(i); 001313 aa 6 00112 7671 66 lprp7 pr6|74,*ql operator.operand 001314 aa 6 00114 6535 00 spri7 pr6|76 q STATEMENT 1 ON LINE 352 q1 = q -> reference.length; 001315 aa 7 00006 7651 00 lprp5 pr7|6 reference.length 001316 aa 6 00122 6515 00 spri5 pr6|82 q1 STATEMENT 1 ON LINE 353 if q1 = null then do; 001317 aa 6 00122 2371 00 ldaq pr6|82 q1 001320 aa 776470 6770 04 eraq -712,ic 000010 = 077777000043 000001000000 001321 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001322 aa 000111 6010 04 tnz 73,ic 001433 STATEMENT 1 ON LINE 355 q2 = q -> reference.symbol; 001323 aa 7 00003 7631 00 lprp3 pr7|3 reference.symbol 001324 aa 6 00124 2535 00 spri3 pr6|84 q2 STATEMENT 1 ON LINE 356 if ^ q2 -> symbol.area then goto step; 001325 aa 3 00031 2351 00 lda pr3|25 symbol.area 001326 aa 002000 3150 03 cana 1024,du 001327 aa 000226 6000 04 tze 150,ic 001555 STATEMENT 1 ON LINE 357 if ^ q2 -> symbol.star_extents then goto step; 001330 aa 3 00033 2351 00 lda pr3|27 symbol.star_extents 001331 aa 004000 3150 03 cana 2048,du 001332 aa 000223 6000 04 tze 147,ic 001555 STATEMENT 1 ON LINE 362 q2 = q -> reference.qualifier; 001333 aa 7 00004 7611 00 lprp1 pr7|4 reference.qualifier 001334 aa 6 00124 2515 00 spri1 pr6|84 q2 STATEMENT 1 ON LINE 363 if q2 = null then goto step; 001335 aa 6 00124 2371 00 ldaq pr6|84 q2 001336 aa 776452 6770 04 eraq -726,ic 000010 = 077777000043 000001000000 001337 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001340 aa 000215 6000 04 tze 141,ic 001555 STATEMENT 1 ON LINE 365 if q2 -> node.type ^= operator_node then goto step; 001341 aa 1 00000 2351 00 lda pr1|0 node.type 001342 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001343 aa 003000 1150 03 cmpa 1536,du 001344 aa 000211 6010 04 tnz 137,ic 001555 STATEMENT 1 ON LINE 366 if q2 -> op_code ^= param_ptr then goto step; 001345 aa 1 00000 2351 00 lda pr1|0 operator.op_code 001346 aa 000011 7350 00 als 9 001347 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001350 aa 151000 1150 03 cmpa 53760,du 001351 aa 000204 6010 04 tnz 132,ic 001555 STATEMENT 1 ON LINE 368 if q2 -> operand(3) ^= cb then goto step; 001352 aa 6 00106 2371 00 ldaq pr6|70 cb 001353 aa 0 00560 7001 00 tsx0 pr0|368 unpk_to_pk 001354 aa 1 00003 1161 00 cmpq pr1|3 operator.operand 001355 aa 000200 6010 04 tnz 128,ic 001555 STATEMENT 1 ON LINE 370 if q2 -> operand(2) -> reference.symbol -> symbol.initial -> based_fixed ^= i then goto step; 001356 aa 1 00002 7631 00 lprp3 pr1|2 operator.operand 001357 aa 3 00003 7651 00 lprp5 pr3|3 reference.symbol 001360 aa 5 00011 7631 00 lprp3 pr5|9 symbol.initial 001361 aa 3 00000 2361 00 ldq pr3|0 based_fixed 001362 aa 6 00146 1161 00 cmpq pr6|102 i 001363 aa 000172 6010 04 tnz 122,ic 001555 STATEMENT 1 ON LINE 372 q3 = c_a(2*(i-1),4); 001364 aa 6 00146 2361 00 ldq pr6|102 i 001365 aa 000001 1760 07 sbq 1,dl 001366 aa 000001 7360 00 qls 1 001367 aa 6 00203 7561 00 stq pr6|131 001370 aa 000004 2360 07 ldq 4,dl 001371 aa 6 00202 7561 00 stq pr6|130 001372 aa 6 00203 3521 00 epp2 pr6|131 001373 aa 6 00206 2521 00 spri2 pr6|134 001374 aa 6 00202 3521 00 epp2 pr6|130 001375 aa 6 00210 2521 00 spri2 pr6|136 001376 aa 6 00126 3521 00 epp2 pr6|86 q3 001377 aa 6 00212 2521 00 spri2 pr6|138 001400 aa 6 00204 6211 00 eax1 pr6|132 001401 aa 014000 4310 07 fld 6144,dl 001402 aa 6 00044 3701 20 epp4 pr6|36,* 001403 la 4 00062 3521 20 epp2 pr4|50,* c_a 001404 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 373 q3 -> address.base = base_man$load_arg(1,cb); 001405 aa 000001 2360 07 ldq 1,dl 001406 aa 6 00202 7561 00 stq pr6|130 001407 aa 6 00202 3521 00 epp2 pr6|130 001410 aa 6 00206 2521 00 spri2 pr6|134 001411 aa 6 00106 3521 00 epp2 pr6|70 cb 001412 aa 6 00210 2521 00 spri2 pr6|136 001413 aa 6 00203 3521 00 epp2 pr6|131 001414 aa 6 00212 2521 00 spri2 pr6|138 001415 aa 6 00204 6211 00 eax1 pr6|132 001416 aa 014000 4310 07 fld 6144,dl 001417 aa 6 00044 3701 20 epp4 pr6|36,* 001420 la 4 00054 3521 20 epp2 pr4|44,* base_man$load_arg 001421 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 001422 aa 6 00203 2351 00 lda pr6|131 001423 aa 0 00006 3771 00 anaq pr0|6 = 700000000000 000000000000 001424 aa 6 00126 3735 20 epp7 pr6|86,* q3 001425 aa 7 00010 6751 00 era pr7|8 reference.base 001426 aa 0 00006 3751 00 ana pr0|6 = 700000000000 001427 aa 7 00010 6551 00 ersa pr7|8 reference.base STATEMENT 1 ON LINE 374 q3 -> address.tag = "010000"b; 001430 aa 000020 2350 07 lda 16,dl 001431 aa 7 00010 7511 01 stca pr7|8,01 reference.tag STATEMENT 1 ON LINE 376 goto gds; 001432 aa 000053 7100 04 tra 43,ic 001505 STATEMENT 1 ON LINE 377 end; STATEMENT 1 ON LINE 379 if q1 -> node.type ^= operator_node then goto step; 001433 aa 5 00000 2351 00 lda pr5|0 node.type 001434 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001435 aa 003000 1150 03 cmpa 1536,du 001436 aa 000117 6010 04 tnz 79,ic 001555 STATEMENT 1 ON LINE 380 if q1 -> op_code ^= desc_size then goto step; 001437 aa 5 00000 2351 00 lda pr5|0 operator.op_code 001440 aa 000011 7350 00 als 9 001441 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001442 aa 211000 1150 03 cmpa 70144,du 001443 aa 000112 6010 04 tnz 74,ic 001555 STATEMENT 1 ON LINE 382 q2 = q1 -> operand(2); 001444 aa 5 00002 7631 00 lprp3 pr5|2 operator.operand 001445 aa 6 00124 2535 00 spri3 pr6|84 q2 STATEMENT 1 ON LINE 383 if q2 -> node.type ^= reference_node then goto step; 001446 aa 3 00000 2351 00 lda pr3|0 node.type 001447 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001450 aa 004000 1150 03 cmpa 2048,du 001451 aa 000104 6010 04 tnz 68,ic 001555 STATEMENT 1 ON LINE 385 q2 = q2 -> reference.qualifier; 001452 aa 3 00004 7611 00 lprp1 pr3|4 reference.qualifier 001453 aa 6 00124 2515 00 spri1 pr6|84 q2 STATEMENT 1 ON LINE 386 if q2 = null then goto step; 001454 aa 6 00124 2371 00 ldaq pr6|84 q2 001455 aa 776333 6770 04 eraq -805,ic 000010 = 077777000043 000001000000 001456 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001457 aa 000076 6000 04 tze 62,ic 001555 STATEMENT 1 ON LINE 388 if q2 -> node.type ^= operator_node then goto step; 001460 aa 1 00000 2351 00 lda pr1|0 node.type 001461 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001462 aa 003000 1150 03 cmpa 1536,du 001463 aa 000072 6010 04 tnz 58,ic 001555 STATEMENT 1 ON LINE 389 if q2 -> op_code ^= param_desc_ptr then goto step; 001464 aa 1 00000 2351 00 lda pr1|0 operator.op_code 001465 aa 000011 7350 00 als 9 001466 aa 0 00022 3771 00 anaq pr0|18 = 777000000000 000000000000 001467 aa 152000 1150 03 cmpa 54272,du 001470 aa 000065 6010 04 tnz 53,ic 001555 STATEMENT 1 ON LINE 391 if q2 -> operand(3) ^= cb then goto step; 001471 aa 6 00106 2371 00 ldaq pr6|70 cb 001472 aa 0 00560 7001 00 tsx0 pr0|368 unpk_to_pk 001473 aa 1 00003 1161 00 cmpq pr1|3 operator.operand 001474 aa 000061 6010 04 tnz 49,ic 001555 STATEMENT 1 ON LINE 392 if q2 -> operand(2) -> reference.symbol -> symbol.initial -> based_fixed ^= i then goto step; 001475 aa 1 00002 7631 00 lprp3 pr1|2 operator.operand 001476 aa 3 00003 7671 00 lprp7 pr3|3 reference.symbol 001477 aa 7 00011 7631 00 lprp3 pr7|9 symbol.initial 001500 aa 3 00000 2361 00 ldq pr3|0 based_fixed 001501 aa 6 00146 1161 00 cmpq pr6|102 i 001502 aa 000053 6010 04 tnz 43,ic 001555 STATEMENT 1 ON LINE 394 q3 = q1 -> operand(2); 001503 aa 5 00002 7671 00 lprp7 pr5|2 operator.operand 001504 aa 6 00126 6535 00 spri7 pr6|86 q3 STATEMENT 1 ON LINE 399 gds: p1 = p -> element(2*i); 001505 aa 6 00146 2361 00 ldq pr6|102 i 001506 aa 000001 7360 00 qls 1 001507 aa 6 00100 7651 66 lprp5 pr6|64,*ql list.element 001510 aa 6 00120 6515 00 spri5 pr6|80 p1 STATEMENT 1 ON LINE 400 if p1 = null then p -> element(2*i), p1 = get_variable(cb); 001511 aa 6 00203 7561 00 stq pr6|131 001512 aa 6 00120 2371 00 ldaq pr6|80 p1 001513 aa 776275 6770 04 eraq -835,ic 000010 = 077777000043 000001000000 001514 aa 0 00460 3771 00 anaq pr0|304 = 077777000077 777777077077 001515 aa 000016 6010 04 tnz 14,ic 001533 001516 aa 6 00106 3521 00 epp2 pr6|70 cb 001517 aa 6 00206 2521 00 spri2 pr6|134 001520 aa 6 00234 3521 00 epp2 pr6|156 001521 aa 6 00210 2521 00 spri2 pr6|136 001522 aa 6 00204 6211 00 eax1 pr6|132 001523 aa 010000 4310 07 fld 4096,dl 001524 aa 6 00044 3701 20 epp4 pr6|36,* 001525 la 4 00060 3521 20 epp2 pr4|48,* get_variable 001526 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out 001527 aa 6 00234 3735 20 epp7 pr6|156,* 001530 aa 6 00203 7271 00 lxl7 pr6|131 001531 aa 6 00100 5471 77 sprp7 pr6|64,*7 list.element 001532 aa 6 00120 6535 00 spri7 pr6|80 p1 STATEMENT 1 ON LINE 402 call expmac((get_desc_size),q3); 001533 aa 000434 2360 07 ldq 284,dl 001534 aa 6 00203 7561 00 stq pr6|131 001535 aa 6 00203 3521 00 epp2 pr6|131 001536 aa 6 00206 2521 00 spri2 pr6|134 001537 aa 6 00126 3521 00 epp2 pr6|86 q3 001540 aa 6 00210 2521 00 spri2 pr6|136 001541 aa 6 00204 6211 00 eax1 pr6|132 001542 aa 010000 4310 07 fld 4096,dl 001543 aa 6 00044 3701 20 epp4 pr6|36,* 001544 la 4 00066 3521 20 epp2 pr4|54,* expmac 001545 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 403 call store(p1); 001546 aa 6 00120 3521 00 epp2 pr6|80 p1 001547 aa 6 00206 2521 00 spri2 pr6|134 001550 aa 6 00204 6211 00 eax1 pr6|132 001551 aa 004000 4310 07 fld 2048,dl 001552 aa 6 00044 3701 20 epp4 pr6|36,* 001553 la 4 00044 3521 20 epp2 pr4|36,* store 001554 aa 0 00623 7001 00 tsx0 pr0|403 call_ext_out STATEMENT 1 ON LINE 405 step: end; 001555 aa 6 00146 0541 00 aos pr6|102 i 001556 aa 777532 7100 04 tra -166,ic 001310 STATEMENT 1 ON LINE 407 end; 001557 aa 0 00631 7101 00 tra pr0|409 return_mac END PROCEDURE compile_entry ----------------------------------------------------------- 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