gbdk-releases/sdcc/src/izt/aop.h
2015-01-10 16:25:09 +01:00

40 lines
699 B
C

/** @file izt/aop.h
*/
#ifndef IZT_AOP_INCLUDE
#define IZT_AOP_INCLUDE
typedef enum {
AOP_TYPE_REG,
AOP_TYPE_CARRY,
AOP_TYPE_LITERAL,
AOP_TYPE_STACK,
AOP_TYPE_SCRATCH_PTR,
AOP_TYPE_IMMEDIATE
} AOP_TYPE;
typedef struct asmop {
AOP_TYPE type;
int size;
union {
value *literal;
REG *reg;
int stack;
const char *immediate;
const char *scratch;
} u;
} asmop;
#define AOP(op) op->aop
#define AOP_TYPE(op) AOP(op)->type
#define AOP_SIZE(op) AOP(op)->size
/** Bind a new AOP to the given operand.
*/
void izt_bindAop(operand *op, iCode *ic);
/** Creates a new asmop that wraps the return value registers.
*/
asmop *izt_getAopForReturn(int size);
#endif