123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /* $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[];
|