X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fz80%2Fgen.h;h=2512bd65e2c517c8b85a867db349493e97440b5b;hb=eae1bd2f705a2c61e143c539f8c4d1e9c2b4efe6;hp=9eb59f04bb9928576c2995f1ccd86a9cd9153dc6;hpb=642a343b925965aa06211d624dc4cb0063c2bcfb;p=fw%2Fsdcc diff --git a/src/z80/gen.h b/src/z80/gen.h index 9eb59f04..2512bd65 100644 --- a/src/z80/gen.h +++ b/src/z80/gen.h @@ -22,54 +22,77 @@ what you give them. Help stamp out software-hoarding! -------------------------------------------------------------------------*/ -#ifndef SDCCGEN51_H -#define SDCCGEN51_H +#ifndef Z80GEN_H +#define Z80GEN_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, + 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 */ AOP_HL, /* Is in A */ - AOP_ACC -} AOP_TYPE; + AOP_ACC, + /* Is in H and L */ + AOP_HLREG, + /* Simple literal. */ + AOP_SIMPLELIT, + /* Is in the extended stack pointer (IY on the Z80) */ + AOP_EXSTK, + /* Is referenced by a pointer in a register pair. */ + AOP_PAIRPTR, + /* Read as 0, discard writes */ + AOP_DUMMY + } +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 */ + unsigned bcInUse:1; + unsigned deInUse:1; + 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. */ + int aop_pairId; /* The pair ID */ + } + aopu; + } +asmop; void genZ80Code (iCode *); +void z80_emitDebuggerSymbol (char *); #endif