*** empty log message ***
authorceriel <none@none>
Mon, 9 Feb 1987 16:39:05 +0000 (16:39 +0000)
committerceriel <none@none>
Mon, 9 Feb 1987 16:39:05 +0000 (16:39 +0000)
mach/z80/cg/mach.c
mach/z80/cg/mach.h

index 89abf0c..16108fc 100644 (file)
@@ -43,18 +43,28 @@ con_part(sz,w) register sz; word w; {
 }
 
 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;
+       }
 }
 
 
@@ -96,8 +106,8 @@ mes(type) word type ; {
 }
 
 char *segname[] = {
-       ".text",
-       ".data",
-       ".data",
-       ".bss"
+       ".sect .text",
+       ".sect .data",
+       ".sect .rom",
+       ".sect .bss"
 };
index 8648d8c..60972b1 100644 (file)
@@ -12,7 +12,7 @@
 
 #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