X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fpic16%2Fgen.h;h=50d83bb8a1b3b100191efa1646248632d5200728;hb=8332acb8ebcdd1490779c012db097c74c71d039e;hp=33c0fa87277046a7918f3409e92cf014d4f212bf;hpb=c60c0a046c95eee2c51d3540a368a50b7364d5fd;p=fw%2Fsdcc diff --git a/src/pic16/gen.h b/src/pic16/gen.h index 33c0fa87..50d83bb8 100644 --- a/src/pic16/gen.h +++ b/src/pic16/gen.h @@ -46,7 +46,8 @@ enum AOP_FSR0, AOP_FSR1, AOP_FSR2, - AOP_PCODE + AOP_PCODE, + AOP_STA // asmop on stack }; /* type asmop : a homogenised type for @@ -85,6 +86,10 @@ typedef struct asmop char *aop_str[4]; /* just a string array containing the location */ /* regs *aop_alloc_reg; * points to a dynamically allocated register */ pCodeOp *pcop; + struct { + int stk; + pCodeOp *pop[4]; + } stk; } aopu; } @@ -173,12 +178,13 @@ void pic16_genMinus (iCode *ic); pCodeOp *pic16_popGetLabel(unsigned int key); pCodeOp *pic16_popCopyReg(pCodeOpReg *pc); pCodeOp *pic16_popCopyGPR2Bit(pCodeOp *pc, int bitval); -pCodeOp *pic16_popGetLit(unsigned int lit); -pCodeOp *pic16_popGetLit2(unsigned int lit, pCodeOp *arg2); +pCodeOp *pic16_popGetLit(int lit); +pCodeOp *pic16_popGetLit2(int lit, pCodeOp *arg2); pCodeOp *popGetWithString(char *str); pCodeOp *pic16_popGet (asmop *aop, int offset);//, bool bit16, bool dname); -pCodeOp *pic16_popGetTempReg(void); -void pic16_popReleaseTempReg(pCodeOp *pcop); +pCodeOp *pic16_popGetTempReg(int lock); +pCodeOp *pic16_popGetTempRegCond(bitVect *, int lock); +void pic16_popReleaseTempReg(pCodeOp *pcop, int lock); pCodeOp *pic16_popCombine2(pCodeOpReg *src, pCodeOpReg *dst, int noalloc);