1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
- /* $Id$ */
- #define NARGBYTES 14
- struct argbytes {
- argb_p ab_next;
- short ab_index;
- char ab_contents[NARGBYTES];
- };
- typedef struct {
- sym_p av_sp;
- offset av_offset;
- } s_a_val;
- typedef struct {
- short ac_length;
- argb_t ac_con;
- } s_a_con;
- typedef union {
- offset a_offset;
- num_p a_np;
- sym_p a_sp;
- s_a_val a_val;
- argb_t a_string;
- s_a_con a_con;
- } un_a_a;
- struct arg {
- arg_p a_next;
- short a_typ;
- un_a_a a_a;
- };
- /* possible values for .a_typ
- */
- #define ARGOFF 0
- #define ARGNUM 1
- #define ARGSYM 2
- #define ARGVAL 3
- #define ARGSTR 4
- #define ARGICN 5
- #define ARGUCN 6
- #define ARGFCN 7
- typedef struct {
- sym_p lasv_sp;
- short lasv_short;
- } s_la_sval;
- typedef struct {
- sym_p lalv_sp;
- offset lalv_offset;
- } s_la_lval;
- typedef union {
- short la_short;
- offset la_offset;
- num_p la_np;
- sym_p la_sp;
- s_la_sval la_sval;
- s_la_lval la_lval;
- arg_p la_arg;
- } un_l_a;
- struct line {
- line_p l_next; /* maintains linked list */
- byte l_instr; /* instruction number */
- byte l_optyp; /* specifies what follows */
- un_l_a l_a;
- };
- /* Possible values for .l_optyp */
- #define OPNO 0 /* no operand */
- #define OPSHORT 1 /* 16 bit number */
- #define OPOFFSET 2 /* 16 or 32 bit number */
- #define OPNUMLAB 3 /* local label for branches */
- #define OPSYMBOL 4 /* global label or procedurename */
- #define OPSVAL 5 /* symbol + 16 bit constant */
- #define OPLVAL 6 /* symbol + 16 or 32 bit constant */
- #define OPLIST 7 /* operand list for some pseudos */
- #define OPMINI 8 /* start of minis */
- #define Z_OPMINI (OPMINI+100) /* tunable */
- #define CANMINI(x) ((x)>=OPMINI-Z_OPMINI && (x)<256-Z_OPMINI)
|