}
con_mult(sz) word sz; {
- long l;
+ long atol();
if (argval != 4)
fatal("bad icon/ucon size");
- l = atol(str);
- fprintf(codefile,".short\t%d\n",(int)l);
- fprintf(codefile,".short\t%d\n",(int)(l>>16));
+ fprintf(codefile, ".data4\t%ld\n", atol(str));
}
con_float() {
+ static int been_here;
+ int sz = argval;
- fatal("no reals");
+ if (sz != 4 && sz != 8) {
+ fatal("bad fcon size");
+ }
+ if (! been_here) {
+ been_here = 1;
+ fprintf(stderr,"warning: dummy floating constant(s)\n");
+ }
+ while (sz) {
+ fprintf(codefile, ".data4 0 !dummy float\n");
+ sz -= 4;
+ }
}
}
char *segname[] = {
- ".text",
- ".data",
- ".data",
- ".bss"
+ ".sect .text",
+ ".sect .data",
+ ".sect .rom",
+ ".sect .bss"
};
#define cst_fmt "%d"
#define off_fmt "%d"
-#define ilb_fmt "I%03x%x"
+#define ilb_fmt "I%x_%x"
#define dlb_fmt "_%d"
#define hol_fmt "hol%d"
#define arg_off "4+%d(bp)"
#define hol_off "%d+hol%d"
-#define con_cst(x) fprintf(codefile,".word\t%d\n",x)
-#define con_ilb(x) fprintf(codefile,".word\t%s\n",x)
-#define con_dlb(x) fprintf(codefile,".word\t%s\n",x)
+#define con_cst(x) fprintf(codefile,".data2\t%d\n",x)
+#define con_ilb(x) fprintf(codefile,".data2\t%s\n",x)
+#define con_dlb(x) fprintf(codefile,".data2\t%s\n",x)
-#define modhead ""
+#define modhead ".sect .text; .sect .rom; .sect .data; .sect .bss\n"
+
+#define fmt_id(fs, ft) sprintf(ft, "_%s", fs)
-#define id_first '_'
#define BSS_INIT 0