projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* src/hc08/gen.c: --no-gen-comments (RFE #1493816) for hc08
[fw/sdcc]
/
src
/
hc08
/
main.c
diff --git
a/src/hc08/main.c
b/src/hc08/main.c
index aa2cbb0cf7cb1b65ed2cddeebba8899812ebba5a..da5fd14fcaf69c3c4a6b9e5bfa1d67ba2ab6a13d 100644
(file)
--- a/
src/hc08/main.c
+++ b/
src/hc08/main.c
@@
-8,13
+8,12
@@
#include "main.h"
#include "ralloc.h"
#include "gen.h"
#include "main.h"
#include "ralloc.h"
#include "gen.h"
+#include "dbuf_string.h"
#include "../SDCCutil.h"
#include "../SDCCutil.h"
-void copyFile(FILE *dest, FILE *src);
extern char * iComments2;
extern char * iComments2;
-extern FILE * dwarf2FilePtr;
extern DEBUGFILE dwarf2DebugFile;
extern DEBUGFILE dwarf2DebugFile;
-extern int dwarf2FinalizeFile(
void
);
+extern int dwarf2FinalizeFile(
FILE *
);
static char _defaultRules[] =
{
static char _defaultRules[] =
{
@@
-52,7
+51,7
@@
static char *_hc08_keywords[] =
};
};
-void hc08_assignRegisters (e
BBlock ** ebbs, int count
);
+void hc08_assignRegisters (e
bbIndex *
);
static int regParmFlg = 0; /* determine if we can register a parameter */
static int regParmFlg = 0; /* determine if we can register a parameter */
@@
-63,13
+62,13
@@
_hc08_init (void)
}
static void
}
static void
-_hc08_reset_regparm ()
+_hc08_reset_regparm (
void
)
{
regParmFlg = 0;
}
static int
{
regParmFlg = 0;
}
static int
-_hc08_regparm (sym_link * l)
+_hc08_regparm (sym_link * l
, bool reentrant
)
{
int size = getSize(l);
{
int size = getSize(l);
@@
-140,7
+139,7
@@
_hc08_setDefaultOptions (void)
{
options.code_loc = 0x8000;
options.data_loc = 0x80;
{
options.code_loc = 0x8000;
options.data_loc = 0x80;
- options.xdata_loc = 0
x100;
+ options.xdata_loc = 0
; /* 0 means immediately following data */
options.stack_loc = 0x7fff;
options.out_fmt = 1; /* use motorola S19 output */
options.stack_loc = 0x7fff;
options.out_fmt = 1; /* use motorola S19 output */
@@
-165,10
+164,13
@@
_hc08_genAssemblerPreamble (FILE * of)
symbol *mainExists=newSymbol("main", 0);
mainExists->block=0;
symbol *mainExists=newSymbol("main", 0);
mainExists->block=0;
- fprintf (of, "\t.area %s\n",port->mem.code_name);
+ fprintf (of, "\t.area %s\n",HOME_NAME);
+ fprintf (of, "\t.area GSINIT0 (CODE)\n");
fprintf (of, "\t.area %s\n",port->mem.static_name);
fprintf (of, "\t.area %s\n",port->mem.post_static_name);
fprintf (of, "\t.area %s\n",port->mem.static_name);
fprintf (of, "\t.area %s\n",port->mem.post_static_name);
+ fprintf (of, "\t.area %s\n",CODE_NAME);
fprintf (of, "\t.area %s\n",port->mem.xinit_name);
fprintf (of, "\t.area %s\n",port->mem.xinit_name);
+ fprintf (of, "\t.area %s\n",port->mem.const_name);
fprintf (of, "\t.area %s\n",port->mem.data_name);
fprintf (of, "\t.area %s\n",port->mem.overlay_name);
fprintf (of, "\t.area %s\n",port->mem.bit_name);
fprintf (of, "\t.area %s\n",port->mem.data_name);
fprintf (of, "\t.area %s\n",port->mem.overlay_name);
fprintf (of, "\t.area %s\n",port->mem.bit_name);
@@
-198,7
+200,7
@@
_hc08_genAssemblerPreamble (FILE * of)
fprintf (of, "\t.org\t0xfffe\n");
fprintf (of, "\t.dw\t%s", "__sdcc_gs_init_startup\n\n");
fprintf (of, "\t.org\t0xfffe\n");
fprintf (of, "\t.dw\t%s", "__sdcc_gs_init_startup\n\n");
- fprintf (of, "\t.area GSINIT\n");
+ fprintf (of, "\t.area GSINIT
0
\n");
fprintf (of, "__sdcc_gs_init_startup:\n");
if (options.stack_loc)
{
fprintf (of, "__sdcc_gs_init_startup:\n");
if (options.stack_loc)
{
@@
-240,8
+242,7
@@
_hc08_genAssemblerEnd (FILE * of)
{
if (options.out_fmt == 2 && options.debug)
{
{
if (options.out_fmt == 2 && options.debug)
{
- dwarf2FinalizeFile();
- copyFile(of, dwarf2FilePtr);
+ dwarf2FinalizeFile (of);
}
}
}
}
@@
-251,28
+252,28
@@
_hc08_genExtraAreas (FILE * asmFile, bool mainExists)
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; extended address mode data\n");
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "%s", iComments2);
fprintf (asmFile, "; extended address mode data\n");
fprintf (asmFile, "%s", iComments2);
-
copyFile (asmFile, xdata->o
File);
+
dbuf_write_and_destroy (&xdata->oBuf, asm
File);
}
/* Generate interrupt vector table. */
static int
}
/* Generate interrupt vector table. */
static int
-_hc08_genIVT (
FILE * o
f, symbol ** interrupts, int maxInterrupts)
+_hc08_genIVT (
struct dbuf_s * oBu
f, symbol ** interrupts, int maxInterrupts)
{
int i;
{
int i;
-
fprintf (o
f, "\t.area\tCODEIVT (ABS)\n");
-
fprintf (o
f, "\t.org\t0x%04x\n",
+
dbuf_printf (oBu
f, "\t.area\tCODEIVT (ABS)\n");
+
dbuf_printf (oBu
f, "\t.org\t0x%04x\n",
(0xfffe - (maxInterrupts * 2)));
for (i=maxInterrupts;i>0;i--)
{
if (interrupts[i])
(0xfffe - (maxInterrupts * 2)));
for (i=maxInterrupts;i>0;i--)
{
if (interrupts[i])
-
fprintf (o
f, "\t.dw\t%s\n", interrupts[i]->rname);
+
dbuf_printf (oBu
f, "\t.dw\t%s\n", interrupts[i]->rname);
else
else
-
fprintf (o
f, "\t.dw\t0xffff\n");
+
dbuf_printf (oBu
f, "\t.dw\t0xffff\n");
}
}
-
fprintf (o
f, "\t.dw\t%s", "__sdcc_gs_init_startup\n");
+
dbuf_printf (oBu
f, "\t.dw\t%s", "__sdcc_gs_init_startup\n");
return TRUE;
}
return TRUE;
}
@@
-418,12
+419,16
@@
PORT hc08_port =
/* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
1, 2, 2, 4, 2, 2, 2, 1, 4, 4
},
/* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
1, 2, 2, 4, 2, 2, 2, 1, 4, 4
},
+ /* tags for generic pointers */
+ { 0x00, 0x40, 0x60, 0x80 }, /* far, near, xstack, code */
+
{
"XSEG",
"STACK",
"CSEG (CODE)",
"DSEG",
NULL, /* "ISEG" */
{
"XSEG",
"STACK",
"CSEG (CODE)",
"DSEG",
NULL, /* "ISEG" */
+ NULL, /* "PSEG" */
"XSEG",
"BSEG",
"RSEG",
"XSEG",
"BSEG",
"RSEG",
@@
-433,6
+438,10
@@
PORT hc08_port =
"HOME (CODE)",
"XISEG", // initialized xdata
"XINIT", // a code copy of xiseg
"HOME (CODE)",
"XISEG", // initialized xdata
"XINIT", // a code copy of xiseg
+ "CONST (CODE)", // const_name - const data (code or not)
+ "CABS (ABS,CODE)", // cabs_name - const absolute data (code or not)
+ "XABS (ABS)", // xabs_name - absolute xdata
+ "IABS (ABS)", // iabs_name - absolute data
NULL,
NULL,
1
NULL,
NULL,
1
@@
-464,10
+473,19
@@
PORT hc08_port =
1, /* offsetSP */
},
},
1, /* offsetSP */
},
},
+ {
+ 256, /* maxCount */
+ 2, /* sizeofElement */
+ {8,16,32}, /* sizeofMatchJump[] */
+ {8,16,32}, /* sizeofRangeCompare[] */
+ 5, /* sizeofSubtract */
+ 10, /* sizeofDispatch */
+ },
"_",
_hc08_init,
_hc08_parseOptions,
_hc08_options,
"_",
_hc08_init,
_hc08_parseOptions,
_hc08_options,
+ NULL,
_hc08_finaliseOptions,
_hc08_setDefaultOptions,
hc08_assignRegisters,
_hc08_finaliseOptions,
_hc08_setDefaultOptions,
hc08_assignRegisters,