#ifndef SDCCGENPIC14_H
#define SDCCGENPIC14_H
+struct pCodeOp;
+
enum
{
AOP_LIT = 1,
AOP_REG, AOP_DIR,
AOP_DPTR, AOP_DPTR2, AOP_R0, AOP_R1,
AOP_STK, AOP_IMMD, AOP_STR,
- AOP_CRY, AOP_ACC
+ AOP_CRY, AOP_ACC,
+ AOP_PCODE
+
};
/* type asmop : a homogenised type for
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 */
+/* regs *aop_alloc_reg; * points to a dynamically allocated register */
+ pCodeOp *pcop;
}
aopu;
}
int pic14_getDataSize(operand *op);
void emitpcode(PIC_OPCODE poc, pCodeOp *pcop);
+void emitpLabel(int key);
void pic14_emitcode (char *inst,char *fmt, ...);
void DEBUGpic14_emitcode (char *inst,char *fmt, ...);
asmop *newAsmop (short type);
pCodeOp *popCopyGPR2Bit(pCodeOp *pc, int bitval);
pCodeOp *popGetLit(unsigned int lit);
pCodeOp *popGetWithString(char *str);
-pCodeOp *popRegFromString(char *str);
+pCodeOp *popRegFromString(char *str, int size, int offset);
pCodeOp *popGet (asmop *aop, int offset);//, bool bit16, bool dname);
+pCodeOp *popGetTempReg(void);
+void popReleaseTempReg(pCodeOp *pcop);
void aopPut (asmop *aop, char *s, int offset);
void pic14_outBitC(operand *result);
void pic14_toBoolean(operand *oper);
void freeAsmop (operand *op, asmop *aaop, iCode *ic, bool pop);
+void mov2w (asmop *aop, int offset);
+const char *pCodeOpType( pCodeOp *pcop);