33 lines
		
	
	
	
		
			880 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			880 B
		
	
	
	
		
			C
		
	
	
	
	
	
#define ARITH_FMT	"%ld"
 | 
						|
#define INT_FMT		"%d"
 | 
						|
 | 
						|
struct t_operand {
 | 
						|
	unsigned type;
 | 
						|
	char *expr, *lbl;
 | 
						|
	int val, reg, reg2, scale, expr2;
 | 
						|
       };
 | 
						|
 | 
						|
#define IS_QUICK		1
 | 
						|
#define IS_IMMEDIATE		2
 | 
						|
#define IS_A_REG		3
 | 
						|
#define IS_D_REG		4
 | 
						|
#define IS_REG_PAIR		5
 | 
						|
#define IS_INCR			6
 | 
						|
#define IS_DECR			7
 | 
						|
#define IS_3_OPS		8
 | 
						|
#define IS_IND_MEM		9
 | 
						|
#define IS_IND_IND		10
 | 
						|
#define IS_GLOB_LBL		11
 | 
						|
#define IS_LOC_LBL		12
 | 
						|
#define IS_IND_REG		13
 | 
						|
#define IS_IND_REG_DISPL	14
 | 
						|
 | 
						|
#define QUICK( op)	(op->type == IS_QUICK)
 | 
						|
#define IMMEDIATE( op)	(op->type == IS_IMMEDIATE)
 | 
						|
#define A_REG( op)	(op->type == IS_A_REG)
 | 
						|
#define D_REG( op)	(op->type == IS_D_REG)
 | 
						|
#define REG_PAIR( op)	(op->type == IS_REG_PAIR)
 | 
						|
#define INCR( op)	(op->type == IS_INCR)
 | 
						|
#define REG( op)	(op->type == IS_A_REG || op->type == IS_D_REG)
 | 
						|
#define LOC_LBL( op)	(op->type == IS_LOC_LBL)
 | 
						|
#define GLOB_LBL( op)	(op->type == IS_GLOB_LBL)
 |