X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fz80%2Fgen.h;h=8751531ce8aa89299d916eae04de8a0891bcc9c6;hb=d7ea4ed7cf4844be678bacdf2ed38e4073335013;hp=389c32ee45c2cd5224d10ea0563266d87b8bf6c3;hpb=c36942cfa3dd71c993330f0ef36e99e0612e13c7;p=fw%2Fsdcc diff --git a/src/z80/gen.h b/src/z80/gen.h index 389c32ee..8751531c 100644 --- a/src/z80/gen.h +++ b/src/z80/gen.h @@ -25,24 +25,25 @@ #ifndef SDCCGEN51_H #define SDCCGEN51_H -typedef enum { +typedef enum + { AOP_INVALID, /* Is a literal */ AOP_LIT = 1, /* Is in a register */ - AOP_REG, + AOP_REG, /* Is in direct space */ AOP_DIR, /* SFR space ($FF00 and above) */ AOP_SFR, /* Is on the stack */ - AOP_STK , + AOP_STK, /* Is an immediate value */ - AOP_IMMD, + AOP_IMMD, /* Is a string (?) */ AOP_STR, /* Is in the carry register */ - AOP_CRY, + AOP_CRY, /* Is pointed to by IY */ AOP_IY, /* Is pointed to by HL */ @@ -50,28 +51,38 @@ typedef enum { /* Is in A */ AOP_ACC, /* Is in H and L */ - AOP_HLREG -} AOP_TYPE; + AOP_HLREG, + /* Simple literal. */ + AOP_SIMPLELIT, + /* Is in the extended stack pointer (IY on the Z80) */ + AOP_EXSTK + } +AOP_TYPE; /* type asmop : a homogenised type for all the different spaces an operand can be in */ -typedef struct asmop { +typedef struct asmop + { AOP_TYPE type; - short coff ; /* current offset */ - short size ; /* total size */ - unsigned code :1 ; /* is in Code space */ - unsigned paged:1 ; /* in paged memory */ - unsigned freed:1 ; /* already freed */ - union { - value *aop_lit ; /* if literal */ - regs *aop_reg[4]; /* array of registers */ - char *aop_dir ; /* if direct */ - char *aop_immd; /* if immediate others are implied */ - int aop_stk ; /* stack offset when AOP_STK */ - char *aop_str[4]; /* just a string array containing the location */ - } aopu; -} asmop; + short coff; /* current offset */ + short size; /* total size */ + unsigned code:1; /* is in Code space */ + unsigned paged:1; /* in paged memory */ + unsigned freed:1; /* already freed */ + union + { + value *aop_lit; /* if literal */ + regs *aop_reg[4]; /* array of registers */ + char *aop_dir; /* if direct */ + char *aop_immd; /* if immediate others are implied */ + int aop_stk; /* stack offset when AOP_STK */ + const char *aop_str[4]; /* just a string array containing the location */ + unsigned long aop_simplelit; /* Just the value. */ + } + aopu; + } +asmop; void genZ80Code (iCode *);