#include "SDCCicode.h"
#include "SDCCargs.h"
#include "SDCCpeeph.h"
-#include "mcs51/peep.h"
+#include "dbuf.h"
#define TARGET_ID_MCS51 1
#define TARGET_ID_GBZ80 2
/* Macro to test the target we are compiling for.
Can only be used after SDCCmain has defined the port
*/
-#define TARGET_IS_MCS51 (port->id==TARGET_ID_MCS51)
-#define TARGET_IS_GBZ80 (port->id==TARGET_ID_GBZ80)
-#define TARGET_IS_Z80 (port->id==TARGET_ID_Z80)
-#define TARGET_IS_AVR (port->id==TARGET_ID_AVR)
-#define TARGET_IS_DS390 (port->id==TARGET_ID_DS390)
-#define TARGET_IS_DS400 (port->id==TARGET_ID_DS400)
-#define TARGET_IS_PIC (port->id==TARGET_ID_PIC)
-#define TARGET_IS_PIC16 (port->id==TARGET_ID_PIC16)
-#define TARGET_IS_XA51 (port->id==TARGET_ID_XA51)
-#define TARGET_IS_HC08 (port->id==TARGET_ID_HC08)
+#define TARGET_IS_MCS51 (port->id==TARGET_ID_MCS51)
+#define TARGET_IS_GBZ80 (port->id==TARGET_ID_GBZ80)
+#define TARGET_IS_Z80 (port->id==TARGET_ID_Z80)
+#define TARGET_Z80_LIKE (TARGET_IS_Z80 || TARGET_IS_GBZ80)
+#define TARGET_IS_AVR (port->id==TARGET_ID_AVR)
+#define TARGET_IS_DS390 (port->id==TARGET_ID_DS390)
+#define TARGET_IS_DS400 (port->id==TARGET_ID_DS400)
+#define TARGET_IS_PIC (port->id==TARGET_ID_PIC)
+#define TARGET_IS_PIC16 (port->id==TARGET_ID_PIC16)
+#define TARGET_IS_XA51 (port->id==TARGET_ID_XA51)
+#define TARGET_IS_HC08 (port->id==TARGET_ID_HC08)
+#define TARGET_MCS51_LIKE (TARGET_IS_MCS51 || TARGET_IS_DS390 || TARGET_IS_DS400)
#define MAX_BUILTIN_ARGS 16
/* definition of builtin functions */
typedef struct builtins
{
char *name; /* name of builtin function */
- char *rtype; /* return type as string : see typefromStr */
+ char *rtype; /* return type as string : see typeFromStr */
int nParms; /* number of parms : max 8 */
char *parm_types[MAX_BUILTIN_ARGS]; /* each parm type as string : see typeFromStr */
} builtins;
/** Unique id for this target */
const int id;
/** Target name used for -m */
- const char *target;
+ const char * const target;
/** Target name string, used for --help */
- const char *target_name;
+ const char * const target_name;
/** Specific processor for the given target family. specified by -p */
char *processor;
int (*getSize)(lineNode *line);
bitVect * (*getRegsRead)(lineNode *line);
bitVect * (*getRegsWritten)(lineNode *line);
- bool (*deadMove) (const char *op, lineNode *currPl, lineNode *head);
+ bool (*deadMove) (const char *reg, lineNode *currPl, lineNode *head);
+ bool (*notUsed) (const char *reg, lineNode *currPl, lineNode *head);
}
peep;
/** memory regions related stuff */
struct
{
- const char *xstack_name;
- const char *istack_name;
+ const char * const xstack_name;
+ const char * const istack_name;
+ /*
+ * The following 2 items can't be const pointers
+ * due to ugly implementation in z80 target;
+ * this should be fixed in src/z80/main.c (borutr)
+ */
const char *code_name;
const char *data_name;
- const char *idata_name;
- const char *pdata_name;
- const char *xdata_name;
- const char *bit_name;
- const char *reg_name;
- const char *static_name;
- const char *overlay_name;
- const char *post_static_name;
- const char *home_name;
- const char *xidata_name; // initialized xdata
- const char *xinit_name; // a code copy of xidata
- const char *const_name; // const data (code or not)
- const char *cabs_name; // const absolute data (code or not)
- const char *xabs_name; // absolute xdata/pdata
- const char *iabs_name; // absolute idata/data
+ const char * const idata_name;
+ const char * const pdata_name;
+ const char * const xdata_name;
+ const char * const bit_name;
+ const char * const reg_name;
+ const char * const static_name;
+ const char * const overlay_name;
+ const char * const post_static_name;
+ const char * const home_name;
+ const char * const xidata_name; // initialized xdata
+ const char * const xinit_name; // a code copy of xidata
+ const char * const const_name; // const data (code or not)
+ const char * const cabs_name; // const absolute data (code or not)
+ const char * const xabs_name; // absolute xdata/pdata
+ const char * const iabs_name; // absolute idata/data
struct memmap *default_local_map; // default location for auto vars
struct memmap *default_globl_map; // default location for globl vars
int code_ro; /* code space read-only 1=yes */
* it returns zero, default (8051) IVT generation code
* will be used.
*/
- int (*genIVT) (FILE * of, symbol ** intTable, int intCount);
+ int (*genIVT) (struct dbuf_s *oBuf, symbol ** intTable, int intCount);
void (*genXINIT) (FILE * of);