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 " Static data segment for code generator
 11 "
 12 " Modified: 16 Nov by PCK to fix bug 1858 by adding cg_stat$in_thunk.
 13 "
 14           name      cg_stat
 15 "
 16 "         CONSTANT INFORMATION
 17 "
 18           segdef    max_program_size    size of largest program
 19 max_program_size:
 20           dec       65536
 21 "
 22           segdef    max_stack_size      size of largest stack frame
 23 max_stack_size:
 24           dec       60000
 25 "
 26           segdef    packed_null_value   inernal value of packed null pointer
 27 packed_null_value:
 28           oct       007777000001
 29 "
 30           segdef    null_value          internal value of null ptr
 31           even
 32 null_value:
 33           its       -1,1,n
 34 "
 35           segdef    offset_null_value   internal value of offset null value
 36 offset_null_value:
 37           oct       777777777777
 38 "
 39           segdef    def_pool_size
 40 def_pool_size:
 41           dec       10                  size of definition pool
 42 "
 43           segdef    version_number
 44 version_number:
 45           dec       2
 46 "
 47 "         VARIABLES
 48 "
 49           use       linkc
 50           join      /link/linkc
 51 "
 52 "         FIXED SCALARS
 53 "
 54           segdef    aos_array           loc in linkage section of current position
 55           bss       aos_array,1         in array of aos counters for entries into prog.
 56 "
 57           segdef    bit_count           bit count of object segment
 58           bss       bit_count,1
 59 "
 60           even
 61           segdef    clock_time          clock reading at start of compilation
 62           bss       clock_time,2
 63 "
 64           segdef    cur_level           nexting level of block being compiled
 65           bss       cur_level,1
 66 "
 67           segdef    def_origin          rel(cg_stat$def_base) stored as fixed bin(18)
 68           bss       def_origin,1
 69 "
 70           segdef    def_pool            dim(0:10)
 71           bss       def_pool,11         vector of pooled definition ptrs for ext static
 72 "
 73           segdef    def_pos             next position to be filled in definitions section
 74           bss       def_pos,1
 75 "
 76           segdef    last_base_used      last base register used
 77           bss       last_base_used,1
 78 "
 79           segdef    last_call           position in text of last call operator
 80           bss       last_call,1
 81 "
 82           segdef    last_index_used     last index used in index chain
 83           bss       last_index_used,1
 84 "
 85           segdef    last_macro          last macro expanded
 86           bss       last_macro,1
 87 "
 88           segdef    link_begin          offset where links start in linkage segment
 89           bss       link_begin,1
 90 "
 91           segdef    link_origin         rel(cg_stat$link_base) stored as fixed bin(18)
 92           bss       link_origin,1
 93 "
 94           segdef    link_pos            next position to be filled in linkage section
 95           bss       link_pos,1
 96 "
 97           segdef    link_rel            start of linkage in object segment
 98           bss       link_rel,1
 99 "
100           segdef    list_break          vector of section breaks in listing
101           bss       list_break,4
102 "
103           segdef    map_start           loc of start of source map in symbol
104           bss       map_start,1
105 "
106           segdef    profile_pos         next position to be filled in profile
107           bss       profile_pos,1
108 "
109           segdef    profile_start       position of start of long_profile
110           bss       profile_start,1
111 "
112           segdef    stat_pos            next position to be filled in static section
113           bss       stat_pos,1
114 "
115           segdef    stat_rel            start of static in object segment
116           bss       stat_rel,1
117 "
118           segdef    sym_origin          rel(cg_stat$sym_base) stored as fixed bin(18)
119           bss       sym_origin,1
120 "
121           segdef    sym_pos             next position to be filled in symbol section
122           bss       sym_pos,1
123 "
124           segdef    sym_rel             start of symbol in object segment
125           bss       sym_rel,1
126 "
127           segdef    text_origin         rel(cg_stat$text_base) stored as fixed bin(18)
128           bss       text_origin,1
129 "
130           segdef    text_pos            next position to be filled in text section
131           bss       text_pos,1
132 "
133 "         BIT SCALARS
134 "
135           segdef    debug               bit(1), ON if debug option used
136           bss       debug,1
137 "
138           segdef    extended_stack      bit(1), ON if stack extended at run-time
139           bss       extended_stack,1
140 "
141           segdef    for_test_called     bit(1), ON if compile_exp$for_test called
142           bss       for_test_called,1
143 "
144           segdef    full_symtab         bit(1), ON means generate full symbol table
145           bss       full_symtab,1
146 "
147           segdef    generate_map        bit(1), ON if statement map being generated
148           bss       generate_map,1
149 "
150           segdef    generate_symtab     bit(1), ON if "put_in_symtab" bit found on any symbol
151           bss       generate_symtab,1
152 "
153           segdef    in_thunk            bit(1), ON if compiling thunk
154           bss       in_thunk,1
155 "
156           segdef    in_prologue         bit(1), ON if compiling prologue
157           bss       in_prologue,1
158 "
159           segdef    io_used             bit(1), ON if io statements used
160           bss       io_used,1
161 "
162           segdef    last_def            bit(18), loc of last definition
163           bss       last_def,1
164 "
165           segdef    long_profile        bit(1), ON if -long_profile specified
166           bss       long_profile,1
167 "
168           segdef    old_id              bit(27), id of last entry in object map
169           bss       old_id,1
170 "
171           segdef    optimize            bit(1), ON if optimize specified
172           bss       optimize,1
173 "
174           segdef    profile_option      bit(1), ON if profile should be generated
175           bss       profile_option,1
176 "
177           segdef    save_exp_called     bit(1), ON if compile_exp$save called
178           bss       save_exp_called,1
179 "
180           segdef    seg_def             bit(18), loc of class 3 segname definition
181           bss       seg_def,1
182 "
183           segdef    skip_to_label       bit(1), ON if ignoring lines after uncond tra
184           bss       skip_to_label,1
185 "
186           segdef    star_symbol_up_zero bit(18), location of link to <*symbol>|0
187           bss       star_symbol_up_zero,1
188 "
189           segdef    separate_static     bit(1), ON if separate static section
190           bss       separate_static,1
191 "
192           segdef    stop_id             bit(27), id of statement to stop on, debugging only
193 stop_id:  oct       777777777777
194 "
195           segdef    support   bit(1), ON if support option specified
196           bss       support,1
197 "
198           segdef    table_option        bit(1), ON if table option specified
199           bss       table_option,1
200 "
201           segdef    use_type_6          bit(1), ON if type 6 links must be generated
202           bss       use_type_6,1        for external data references
203 "
204           segdef    used_operator       (900) bit(1), ON if ith operator used
205           bss       used_operator,25
206 "
207           segdef    zero_def            bit(18), loc of zero word in definitions
208           bss       zero_def,1
209 "
210 "
211 "         CHARACTER SCALARS
212 "
213           segdef    compiler_name       char(12) var, name of compiler
214           bss       compiler_name,4
215 "
216           segdef    seg_name            char(32) var, name of program being compiled
217           bss       seg_name,9
218 "
219           segdef    version_name        char(64) var, version of compiler message
220           bss       version_name,34
221 "
222 "         POINTER SCALARS
223 "
224           even
225 "
226           segdef    agg_temps           ptr to list of aggreate temps allocated
227           bss       agg_temps,2
228 "
229           segdef    complex_ac          ptr to ref node for complex accumulator
230           bss       complex_ac,2
231 "
232           segdef    constant_list       ptr to list of constants
233           bss       constant_list,2
234 "
235           segdef    cur_block           ptr to block being compiled
236           bss       cur_block,2
237 "
238           segdef    cur_entry           ptr to current entry statement
239           bss       cur_entry,2
240 "
241           segdef    cur_node            ptr to current node in tree
242           bss       cur_node,2
243 "
244           segdef    cur_statement       ptr to statement being compiled
245           bss       cur_statement,2
246 "
247           segdef    cur_tree            ptr to tree being compiled
248           bss       cur_tree,2
249 "
250           segdef    def_base            ptr to base of definitions section buffer
251           bss       def_base,2
252 "
253           segdef    def_reloc_base      ptr to base of definitions section relocation buffer
254           bss       def_reloc_base,2
255 "
256           segdef    desc_list_ptr
257 desc_list_ptr:
258           its       -1,1,n
259 "
260           segdef    double_temp         ptr to ref node for double temp cell
261           bss       double_temp,2
262 "
263           segdef    dummy_block         ptr to block node for use by e_v
264           bss       dummy_block,2
265 "
266           segdef    dummy_statement     ptr to statement node for use by e_v
267           bss       dummy_statement,2
268 "
269           segdef    eis_temp  ptr to temporary set up by string_temp
270           bss       eis_temp,2
271 "
272           segdef    encoded_values      ptr to list of values encoded by e_v
273           bss       encoded_values,2
274 "
275           segdef    entry_arg           ptr to arg for entry macro
276           bss       entry_arg,2
277 "
278           segdef    entry_vector_pointer          ptr to entry_vector in fortran|pl1
279           bss       entry_vector_pointer,2
280 "
281           segdef    ev_qual             ptr to param ptr qual exp used by e_v
282           bss       ev_qual,2
283 "
284           segdef    ext_proc_list       ptr to list of external procedures used
285           bss       ext_proc_list,2
286 "
287           segdef    ext_var_list        ptr to list of external variables used
288           bss       ext_var_list,2
289 "
290           segdef    first_op            ptr to first operator node used by eval_exp
291           bss       first_op,2
292 "
293           segdef    first_ref           ptr to first reference node on get_reference list
294           bss       first_ref,2
295 "
296           segdef    format_list         ptr to list of format nodes
297           bss       format_list,2
298 "
299           segdef    jump_label          ptr to scratch label used by jump_op
300           bss       jump_label,2
301 "
302           segdef    label_list          ptr to list of label_arrays
303           bss       label_list,2
304 "
305           segdef    last_encoded        ptr to last value encoded by e_v
306           bss       last_encoded,2
307 "
308           segdef    last_label          ptr to last label array in label_list
309           bss       last_label,2
310 "
311           segdef    link_base           ptr to base of linkage section buffer
312           bss       link_base,2
313 "
314           segdef    link_reloc_base     ptr to base of linkage section relocation buffer
315           bss       link_reloc_base,2
316 "
317           segdef    long_string_temp    ptr to ref node for long string temp cell
318           bss       long_string_temp,2
319 "
320           segdef    m_s_p               ptr to machine state node
321           bss       m_s_p,2
322 "
323           segdef    ms_list             ptr to list of machine state nodes
324           bss       ms_list,2
325 "
326           segdef    name_list           ptr to list of names kept by "name_assign"
327           bss       name_list,2
328 "
329           segdef    next_op             ptr to next operator node to be used by eval_exp
330           bss       next_op,2
331 "
332           segdef    next_ref            ptr to next reference node on get_reference list
333           bss       next_ref,2
334 "
335           segdef    objmap_pt           ptr to object map in object segment
336           bss       objmap_pt,2
337 "
338           segdef    profile_base        ptr to base of seg where profile is placed
339           bss       profile_base,2
340 "
341           segdef    prol_ent            ptr to label defining prologue entry point
342           bss       prol_ent,2
343 "
344           segdef    return_operator     ptr to node for return op in pl1_ops_
345           bss       return_operator,2
346 "
347           segdef    root                ptr to root of program being compiled
348           bss       root,2
349 "
350           segdef    stop_operator       ptr to node for return op in pl1_ops_
351           bss       stop_operator,2
352 "
353           segdef    return_main_operator          ptr to node for return_main op in pl1_ops_
354           bss       return_main_operator,2
355 "
356           segdef    stat_base           ptr to base of static section buffer
357 stat_base:
358           its       -1,1,n
359 "
360           segdef    sym_base            ptr to base of symbol section buffer
361           bss       sym_base,2
362 "
363           segdef    sym_reloc_base      ptr to base of symbol section relocation buffer
364           bss       sym_reloc_base,2
365 "
366           segdef    sym_use_base        ptr to array giving use of symbols in text section
367           bss       sym_use_base,2
368 "
369           segdef    temp_ref            ptr to reference for temp result of operator
370           bss       temp_ref,2
371 "
372           segdef    temporary_list      ptr to list of temporaries
373           bss       temporary_list,2
374 "
375           segdef    text_base           ptr to base of text section buffer
376           bss       text_base,2
377 "
378           segdef    text_reloc_base     ptr to base of text section relocation buffer
379           bss       text_reloc_base,2
380 "
381           segdef    validate_proc       ptr to dcl of validation procedure
382 validate_proc:
383           its       -1,1,n
384 "
385           segdef    word_ref            ptr to ref node for word offset part of offset
386           bss       word_ref,2
387 "
388 "         AGGREGATES
389 "
390           segdef    statement_map
391           bss       statement_map,1
392           end