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)
 |