#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 IS_IND_REG_EDISPL 15 #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)