X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fpic16%2Fgenutils.h;h=ea2ca70ae9b49a24be398bc41ef3554eda5d6279;hb=61c6515b039a977d80942130e789e6fc0f243cf5;hp=2c81d09a7255e237cebd2f33eb4f31d6bbc9914e;hpb=a4d219fe6e7a7b938a3fb60a136149595e4e6f15;p=fw%2Fsdcc diff --git a/src/pic16/genutils.h b/src/pic16/genutils.h index 2c81d09a..ea2ca70a 100644 --- a/src/pic16/genutils.h +++ b/src/pic16/genutils.h @@ -10,6 +10,26 @@ #include "common.h" +#if !defined(__BORLANDC__) && !defined(_MSC_VER) +#define DEBUGpc(fmt,...) DEBUGpic16_emitcode("; =:=", "%s:%s:%d: " fmt, __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define DEBUGpc 1 ? (void)0 : printf +#endif +#define isAOP_LIT(x) (AOP_TYPE(x) == AOP_LIT) +#define isAOP_REGlike(x) (AOP_TYPE(x) == AOP_REG || AOP_TYPE(x) == AOP_DIR || AOP_TYPE(x) == AOP_PCODE || AOP_TYPE(x) == AOP_STA) + + +/* Resolved ifx structure. This structure stores information + * about an iCode ifx that makes it easier to generate code. + */ +typedef struct resolvedIfx { + symbol *lbl; /* pointer to a label */ + int condition; /* true or false ifx */ + int generated; /* set true when the code associated with the ifx + * is generated */ +} resolvedIfx; + + /* * The various GEN_xxxxx macros handle which functions * should be included in the gen.c source. We are going to use @@ -32,12 +52,21 @@ void pic16_DumpPcodeOp(char *prefix, pCodeOp *pcop); void pic16_DumpAop(char *prefix, asmop *aop); void pic16_DumpSymbol(char *prefix, symbol *sym); void pic16_DumpOp(char *prefix, operand *op); +void pic16_DumpOpX(FILE *fp, char *prefix, operand *op); + +pCodeOp *pic16_popGetWithString(char *str); +void pic16_callGenericPointerRW(int rw, int size); + + void gpsimio2_pcop(pCodeOp *pcop); void gpsimio2_lit(unsigned char lit); void gpsimDebug_StackDump(char *fname, int line, char *info); +int pic16_genCmp_special(operand *left, operand *right, operand *result, + iCode *ifx, resolvedIfx *rIfx, int sign); + #ifndef debugf #define debugf(frm, rest) _debugf(__FILE__, __LINE__, frm, rest) #endif