58 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.5 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".
 | 
						|
 */
 | 
						|
/* $Id$ */
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	int     t_token;        /* kind of token, -1 for register */
 | 
						|
	union {
 | 
						|
		word aw;	/* integer type */
 | 
						|
		string as;	/* string type */
 | 
						|
		int ar;		/* register type */
 | 
						|
	} t_att[TOKENSIZE];
 | 
						|
} token_t,*token_p;
 | 
						|
 | 
						|
struct reginfo {
 | 
						|
	int     r_repr;                 /* index in string table */
 | 
						|
	int     r_size;                 /* size in bytes */
 | 
						|
#if MAXMEMBERS!=0
 | 
						|
	int     r_members[MAXMEMBERS];  /* register contained within this reg */
 | 
						|
	short	r_clash[REGSETSIZE];	/* set of clashing registers */
 | 
						|
#endif
 | 
						|
	int     r_refcount;             /* Times in use */
 | 
						|
	token_t r_contents;             /* Current contents */
 | 
						|
	int     r_tcount;               /* Temporary count difference */
 | 
						|
};
 | 
						|
 | 
						|
#if MAXMEMBERS!=0
 | 
						|
#define clash(a,b) ((machregs[a].r_clash[(b)>>4]&(1<<((b)&017)))!=0)
 | 
						|
#else
 | 
						|
#define clash(a,b) ((a)==(b))
 | 
						|
#endif
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	int     t_size;                 /* size in bytes */
 | 
						|
	cost_t  t_cost;                 /* cost in bytes and time */ 
 | 
						|
	byte    t_type[TOKENSIZE];      /* types of attributes, TT_??? */
 | 
						|
	int     t_format;               /* index of formatstring */
 | 
						|
} tkdef_t,*tkdef_p;
 | 
						|
 | 
						|
struct emline {
 | 
						|
	int     em_instr;
 | 
						|
	int     em_optyp;
 | 
						|
	string  em_soper;
 | 
						|
	union {
 | 
						|
		word    em_ioper;
 | 
						|
		long	em_loper;
 | 
						|
	} em_u;
 | 
						|
};
 | 
						|
 | 
						|
#define OPNO 0
 | 
						|
#define OPINT 1
 | 
						|
#define OPSYMBOL 2
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	int rl_n;       /* number in list */
 | 
						|
	int rl_list[NREGS];
 | 
						|
} rl_t,*rl_p;
 |