X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmcs51%2Fgen.h;h=3cd811f20c981f4ee3006a658e3be4948e2ba352;hb=81cd49cd3298b973e88c4b9cdce1fa6f86a2f2b0;hp=567948f3d998e6c9a12e3f05ff65f0a8da68e174;hpb=b4d69dfd516f175255aa87b18b59dcf309d98b46;p=fw%2Fsdcc diff --git a/src/mcs51/gen.h b/src/mcs51/gen.h index 567948f3..3cd811f2 100644 --- a/src/mcs51/gen.h +++ b/src/mcs51/gen.h @@ -29,9 +29,9 @@ enum { AOP_LIT = 1, AOP_REG, AOP_DIR, - AOP_DPTR, AOP_DPTR2, AOP_R0, AOP_R1, + AOP_DPTR, AOP_R0, AOP_R1, AOP_STK, AOP_IMMD, AOP_STR, - AOP_CRY, AOP_ACC + AOP_CRY, AOP_ACC, AOP_DUMMY }; /* type asmop : a homogenised type for @@ -40,32 +40,37 @@ enum typedef struct asmop { - short type; /* can have values - AOP_LIT - operand is a literal value - AOP_REG - is in registers - AOP_DIR - direct just a name - AOP_DPTR - dptr contains address of operand - AOP_DPTR2 - dptr2 contains address of operand (DS80C390 only). - AOP_R0/R1 - r0/r1 contains address of operand - AOP_STK - should be pushed on stack this - can happen only for the result - AOP_IMMD - immediate value for eg. remateriazable - AOP_CRY - carry contains the value of this - AOP_STR - array of strings - AOP_ACC - result is in the acc:b pair - */ + short type; + /* can have values + AOP_LIT - operand is a literal value + AOP_REG - is in registers + AOP_DIR - direct just a name + AOP_DPTR - dptr contains address of operand + AOP_R0/R1 - r0/r1 contains address of operand + AOP_STK - should be pushed on stack this + can happen only for the result + AOP_IMMD - immediate value for eg. remateriazable + AOP_CRY - carry contains the value of this + AOP_STR - array of strings + AOP_ACC - result is in the acc:b pair + AOP_DUMMY - read as 0, discard writes + */ 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 short allocated; /* number of times allocated */ union { value *aop_lit; /* if literal */ regs *aop_reg[4]; /* array of registers */ char *aop_dir; /* if direct */ regs *aop_ptr; /* either -> to r0 or r1 */ - char *aop_immd; /* if immediate others are implied */ + struct { + int from_cast_remat; /* cast remat created this : immd2 field used for highest order*/ + char *aop_immd1; /* if immediate others are implied */ + char *aop_immd2; /* cast remat will generate this */ + } aop_immd; int aop_stk; /* stack offset when AOP_STK */ char *aop_str[4]; /* just a string array containing the location */ } @@ -74,10 +79,10 @@ typedef struct asmop asmop; void gen51Code (iCode *); +void mcs51_emitDebuggerSymbol (char *); -extern char *fReturn8051[]; -extern char *fReturn390[]; -extern unsigned fReturnSize; -extern char **fReturn; +//extern char *fReturn8051[]; +extern unsigned fReturnSizeMCS51; +//extern char **fReturn; #endif