#define UNKNOWN 0 #define IS_REG 0x1 #define IS_ACCU 0x2 #define IS_DATA 0x4 #define IS_LABEL 0x8 #define IS_MEM 0x10 #define IS_ADDR 0x20 #define IS_ILB 0x40 #define AX 0 #define BX 3 #define CX 1 #define DX 2 #define CL 1 #define SP 4 #define BP 5 #define SI 6 #define DI 7 #define REG( op) ( op->type & IS_REG) #define ACCU( op) ( op->type & IS_REG && op->reg == AX) #define REG_CL( op) ( op->type & IS_REG && op->reg == CL) #define DATA( op) ( op->type & IS_DATA) #define lABEL( op) ( op->type & IS_LABEL) #define ILB( op) ( op->type & IS_ILB) /*#define MEM( op) ( op->type & IS_MEM)*/ #define ADDR( op) ( op->type & IS_ADDR) #define EADDR( op) ( op->type & ( IS_ADDR | IS_MEM | IS_REG)) #define TRUE 1 #define FALSE 0 struct t_operand { unsigned type; int reg; char *expr, *lab, *off; };