1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
/*
** $Id: genutils.h 4051 2006-03-06 08:27:52Z vrokas $
*/
#ifndef __GENUTILS_H__
#define __GENUTILS_H__
#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
* our own functions here so, they must be commented out from
* gen.c
*/
#define GEN_Not
void pic16_genNot(iCode *ic);
#define GEN_Cpl
void pic16_genCpl(iCode *ic);
/*
* global function definitions
*/
void pic16_DumpValue(char *prefix, value *val);
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
void _debugf(char *f, int l, char *frm, ...);
#endif /* __GENUTILS_H__ */
|