80 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| .NH 2
 | |
| External representation of the intermediate code
 | |
| .PP
 | |
| The syntax of the intermediate code was given
 | |
| in the previous section.
 | |
| In this section we will make some remarks about
 | |
| the representation of the code in sequential files.
 | |
| .sp
 | |
| We use sequential files in order to avoid
 | |
| the bookkeeping of complex file indices.
 | |
| As a consequence of this decision
 | |
| we can't store all components
 | |
| of the intermediate code
 | |
| in one file.
 | |
| If a phase wishes to change some attribute
 | |
| of a procedure,
 | |
| or wants to add or delete entire procedures
 | |
| (inline substitution may do the latter),
 | |
| the procedure table will only be fully updated
 | |
| after the entire EM text has been scanned.
 | |
| Yet, the next phase undoubtedly wants
 | |
| to read the procedure table before it
 | |
| starts working on the EM text.
 | |
| Hence there is an ordering problem, which
 | |
| can be solved easily by putting the
 | |
| procedure table in a separate file.
 | |
| Similarly, the data block table is kept
 | |
| in a file of its own.
 | |
| .PP
 | |
| The control flow graphs (CFGs) could be mixed
 | |
| with the EM text.
 | |
| Rather, we have chosen to put them
 | |
| in a separate file too.
 | |
| The control flow graph file should be regarded as a
 | |
| file that imposes some structure on the EM-text file,
 | |
| just as an overhead sheet containing a picture
 | |
| of a Flow Chart may be put on an overhead sheet
 | |
| containing statements.
 | |
| The loop tables are also put in the CFG file.
 | |
| A loop imposes an extra structure on the
 | |
| CFGs and hence on the EM text.
 | |
| So there are four files:
 | |
| .IP -
 | |
| the EM-text file
 | |
| .IP -
 | |
| the procedure table file
 | |
| .IP -
 | |
| the object table file
 | |
| .IP -
 | |
| the CFG and loop tables file
 | |
| .LP
 | |
| Every table is preceded by its length, in order to
 | |
| tell where it ends.
 | |
| The CFG file also contains the number of instructions of
 | |
| every basic block,
 | |
| indicating which part of the EM text belongs
 | |
| to that block.
 | |
| .DS
 | |
| .UL syntax
 | |
|   intermediate_code:
 | |
|                 object_table_file
 | |
|                 proctable_file
 | |
|                 em_text_file
 | |
|                 cfg_file ;
 | |
|   object_table_file:
 | |
|                 LENGTH          -- number of objects
 | |
|                 object_table ;
 | |
|   proctable_file:
 | |
|                 LENGTH          -- number of procedures
 | |
|                 procedure_table ;
 | |
|   em_text_file:
 | |
|                 em_text ;
 | |
|   cfg_file:
 | |
|                 {per_proc} ;    -- one for every procedure
 | |
|   per_proc:
 | |
|                 BLENGTH         -- number of basic blocks
 | |
|                 LLENGTH         -- number of loops
 | |
|                 control_flow_graph
 | |
|                 looptable ;
 | |
| .DE
 |