#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;
       };
