- TARGET_ID_PIC,
- "pic14",
- "MCU pic", /* Target name */
- "", /* Processor */
- {
- picglue,
- TRUE, /* Emit glue around main */
- MODEL_SMALL | MODEL_LARGE | MODEL_FLAT24,
- MODEL_SMALL
- },
- {
- _asmCmd,
- NULL,
- NULL,
- NULL,
- //"-plosgffc", /* Options with debug */
- //"-plosgff", /* Options without debug */
- 0,
- ".asm",
- NULL /* no do_assemble function */
- },
- {
- _linkCmd,
- NULL,
- _pic14_do_link, /* own do link function */
- ".o",
- 0
- },
- {
- _defaultRules
- },
- {
- /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
- 1, 2, 2, 4, 2, 2, 3, 1, 4, 4
- /* TSD - I changed the size of gptr from 3 to 1. However, it should be
- 2 so that we can accomodate the PIC's with 4 register banks (like the
- 16f877)
- */
- },
- /* tags for generic pointers */
- { 0x00, 0x00, 0x00, 0x80 }, /* far, near, xstack, code */
- {
- "XSEG (XDATA)",
- "STACK (DATA)",
- "code",
- "DSEG (DATA)",
- "ISEG (DATA)",
- NULL, /* pdata */
- "XSEG (XDATA)",
- "BSEG (BIT)",
- "RSEG (DATA)",
- "GSINIT (CODE)",
- "udata_ovr",
- "GSFINAL (CODE)",
- "HOME (CODE)",
- NULL, // xidata
- NULL, // xinit
- "CONST (CODE)", // const_name - const data (code or not)
- NULL,
- NULL,
- 1 // code is read only
- },
- { NULL, NULL },
- {
- +1, 1, 4, 1, 1, 0
- },
- /* pic14 has an 8 bit mul */
- {
- 1, -1
- },
- {
- pic14_emitDebuggerSymbol
- },
- {
- 255/3, /* maxCount */
- 3, /* sizeofElement */
- /* The rest of these costs are bogus. They approximate */
- /* the behavior of src/SDCCicode.c 1.207 and earlier. */
- {4,4,4}, /* sizeofMatchJump[] */
- {0,0,0}, /* sizeofRangeCompare[] */
- 0, /* sizeofSubtract */
- 3, /* sizeofDispatch */
- },
- "_",
- _pic14_init,
- _pic14_parseOptions,
- _pic14_poptions,
- _pic14_initPaths,
- _pic14_finaliseOptions,
- _pic14_setDefaultOptions,
- pic14_assignRegisters,
- _pic14_getRegName,
- _pic14_keywords,
- _pic14_genAssemblerPreamble,
- NULL, /* no genAssemblerEnd */
- _pic14_genIVT,
- NULL, // _pic14_genXINIT
- NULL, /* genInitStartup */
- _pic14_reset_regparm,
- _pic14_regparm,
- _process_pragma, /* process a pragma */
- NULL,
- _hasNativeMulFor,
- hasExtBitOp, /* hasExtBitOp */
- oclsExpense, /* oclsExpense */
- FALSE,
-// TRUE, /* little endian */
- FALSE, /* little endian - PIC code enumlates big endian */
- 0, /* leave lt */
- 0, /* leave gt */
- 1, /* transform <= to ! > */
- 1, /* transform >= to ! < */
- 1, /* transform != to !(a == b) */
- 0, /* leave == */
- FALSE, /* No array initializer support. */
- 0, /* no CSE cost estimation yet */
- NULL, /* no builtin functions */
- GPOINTER, /* treat unqualified pointers as "generic" pointers */
- 1, /* reset labelKey to 1 */
- 1, /* globals & local static allowed */
- PORT_MAGIC
+ TARGET_ID_PIC,
+ "pic14",
+ "MCU pic", /* Target name */
+ "", /* Processor */
+ {
+ picglue,
+ TRUE, /* Emit glue around main */
+ MODEL_SMALL | MODEL_LARGE | MODEL_FLAT24,
+ MODEL_SMALL
+ },
+ {
+ _asmCmd,
+ NULL,
+ "-g", /* options with --debug */
+ NULL, /* options without --debug */
+ //"-plosgffc", /* Options with debug */
+ //"-plosgff", /* Options without debug */
+ 0,
+ ".asm",
+ NULL /* no do_assemble function */
+ },
+ {
+ _linkCmd,
+ NULL,
+ _pic14_do_link, /* own do link function */
+ ".o",
+ 0
+ },
+ {
+ _defaultRules
+ },
+ {
+ /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
+ 1, 2, 2, 4, 2, 2, 3, 1, 4, 4
+ /* TSD - I changed the size of gptr from 3 to 1. However, it should be
+ 2 so that we can accomodate the PIC's with 4 register banks (like the
+ 16f877)
+ */
+ },
+ /* tags for generic pointers */
+ { 0x00, 0x00, 0x00, 0x80 }, /* far, near, xstack, code */
+ {
+ "XSEG (XDATA)",
+ "STACK (DATA)",
+ "code",
+ "DSEG (DATA)",
+ "ISEG (DATA)",
+ NULL, /* pdata */
+ "XSEG (XDATA)",
+ "BSEG (BIT)",
+ "RSEG (DATA)",
+ "GSINIT (CODE)",
+ "udata_ovr",
+ "GSFINAL (CODE)",
+ "HOME (CODE)",
+ NULL, // xidata
+ NULL, // xinit
+ "CONST (CODE)", // const_name - const data (code or not)
+ "CABS (ABS,CODE)", // cabs_name - const absolute data (code or not)
+ "XABS (ABS,XDATA)", // xabs_name - absolute xdata
+ "IABS (ABS,DATA)", // iabs_name - absolute data
+ NULL,
+ NULL,
+ 1 // code is read only
+ },
+ { NULL, NULL },
+ {
+ +1, 1, 4, 1, 1, 0
+ },
+ /* pic14 has an 8 bit mul */
+ {
+ 1, -1
+ },
+ {
+ pic14_emitDebuggerSymbol
+ },
+ {
+ 255/3, /* maxCount */
+ 3, /* sizeofElement */
+ /* The rest of these costs are bogus. They approximate */
+ /* the behavior of src/SDCCicode.c 1.207 and earlier. */
+ {4,4,4}, /* sizeofMatchJump[] */
+ {0,0,0}, /* sizeofRangeCompare[] */
+ 0, /* sizeofSubtract */
+ 3, /* sizeofDispatch */
+ },
+ "_",
+ _pic14_init,
+ _pic14_parseOptions,
+ _pic14_poptions,
+ _pic14_initPaths,
+ _pic14_finaliseOptions,
+ _pic14_setDefaultOptions,
+ pic14_assignRegisters,
+ _pic14_getRegName,
+ _pic14_keywords,
+ _pic14_genAssemblerPreamble,
+ NULL, /* no genAssemblerEnd */
+ _pic14_genIVT,
+ NULL, // _pic14_genXINIT
+ NULL, /* genInitStartup */
+ _pic14_reset_regparm,
+ _pic14_regparm,
+ NULL, /* process a pragma */
+ NULL,
+ _hasNativeMulFor,
+ hasExtBitOp, /* hasExtBitOp */
+ oclsExpense, /* oclsExpense */
+ FALSE,
+// TRUE, /* little endian */
+ FALSE, /* little endian - PIC code enumlates big endian */
+ 0, /* leave lt */
+ 0, /* leave gt */
+ 1, /* transform <= to ! > */
+ 1, /* transform >= to ! < */
+ 1, /* transform != to !(a == b) */
+ 0, /* leave == */
+ FALSE, /* No array initializer support. */
+ 0, /* no CSE cost estimation yet */
+ NULL, /* no builtin functions */
+ GPOINTER, /* treat unqualified pointers as "generic" pointers */
+ 1, /* reset labelKey to 1 */
+ 1, /* globals & local static allowed */
+ PORT_MAGIC