75 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Id$ */
 | |
| /*
 | |
|  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
|  * See the copyright notice in the ACK home directory, in the file "Copyright".
 | |
|  */
 | |
| /*  I N T E R M E D I A T E   C O D E
 | |
|  *
 | |
|  *  G L O B A L   C O N S T A N T S  &  V A R I A B L E S
 | |
|  */
 | |
| 
 | |
| 
 | |
| /* Data structures for Intermediate Code generation */
 | |
| 
 | |
| typedef struct sym *sym_p;
 | |
| typedef struct prc *prc_p;
 | |
| typedef struct num *num_p;
 | |
| 
 | |
| 
 | |
| struct sym {
 | |
| 	sym_p	 sy_next;	/* link					*/
 | |
| 	char	 *sy_name;	/* name of the symbol			*/
 | |
| 	dblock_p sy_dblock;	/* pointer to dblock struct		*/
 | |
| };
 | |
| struct prc {
 | |
| 	prc_p	 pr_next;	/* link					*/
 | |
| 	char	 *pr_name;	/* name of the procedure		*/
 | |
| 	proc_p	 pr_proc;	/* pointer tto proc struct		*/
 | |
| };
 | |
| 
 | |
| 
 | |
| struct num {
 | |
| 	num_p	 n_next;	/* link					*/
 | |
| 	unsigned n_number;	/* EM repr. e.g. 120 in 'BRA *120'	*/
 | |
| 	lab_id	 n_labid;	/* sequential integer repr. of  IC	*/
 | |
| };
 | |
| 
 | |
| 
 | |
| 
 | |
| /* macros used by ic_lib.c and ic_io.c: */
 | |
| 
 | |
| #define ARCHIVE	0
 | |
| #define NO_ARCHIVE 1
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * The next constants are close to sp_cend for fast switches
 | |
|  */
 | |
| #define INST	256	/* instruction:		number in tabval */
 | |
| #define PSEU	257	/* pseudo:		number in tabval */
 | |
| #define ILBX	258	/* label:		number in tabval */
 | |
| #define DLBX	259	/* symbol:		name in string[] */
 | |
| #define CSTX1	260	/* short constant:	stored in tabval */
 | |
| #define CSTX2	261	/* offset:		value in tabval2 */
 | |
| #define VALX1	262	/* symbol+short:	in string[] and tabval */
 | |
| #define VALX2	263	/* symbol+offset:	in string[] and tabval2 */
 | |
| #define ATEOF	264	/* bumped into end of file */
 | |
| 
 | |
| /* Global variables */
 | |
| 
 | |
| extern dblock_p	db;
 | |
| extern dblock_p	hol0_db;		/* ABS block */
 | |
| extern dblock_p		ldblock;	/* last dblock processed so  far   */
 | |
| extern proc_p		lproc;		/* last proc processed so far  */
 | |
| extern short		tabval;		/* used by table1, table2 and table3 */
 | |
| extern offset		tabval2;
 | |
| extern char		string[];
 | |
| extern line_p		lastline;	/* last line read */
 | |
| extern int		labelcount;	/* # labels in current procedure */
 | |
| extern obj_id		lastoid;	/* last object identifier used	*/
 | |
| extern proc_id		lastpid;	/* last proc   identifier used  */
 | |
| extern lab_id		lastlid;	/* last label  identifier used	*/
 | |
| extern dblock_id	lastdid;	/* last dblock identifier used	*/
 | |
| 
 | |
| extern byte em_flag[];
 | |
| 
 |