93 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
|  * See the copyright notice in the ACK home directory, in the file "Copyright".
 | |
|  */
 | |
| /* $Header$ */
 | |
| 
 | |
| #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 */
 | |
| 	line_p		l_prev;		/* for back referencing loc's */
 | |
| 	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)
 |