34 lines
880 B
C
34 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)
|