if (sz != 4)
fatal("bad icon/ucon size");
+#ifdef ACK_ASS
+ fprintf(codefile,".long %s\n",str);
+#else
l = atol(str);
fprintf(codefile,"\t%o;%o\n",(int)(l>>16),(int)l);
+#endif
}
+/*
+ * The next function is difficult to do when not running on a PDP 11 or VAX
+ * The strategy followed is to assume the code generator is running on a PDP 11
+ * unless the ACK_ASS define is on.
+ * In the last case floating point constants are simply not handled
+ */
+
con_float() {
+#ifdef ACK_ASS
+ static int been_here;
+
+ if (argval != 4 && argval != 8)
+ fatal("bad fcon size");
+ fprintf(codefile,".long\t");
+ if (argval == 8)
+ fprintf(codefile,"F_DUM,");
+ fprintf(codefile,"F_DUM\n");
+ if ( !been_here++)
+ fprintf(stderr,"Warning : dummy float-constant(s)\n");
+#else
double f;
register short *p,i;
i = *p++;
}
fprintf(codefile,"\t%o;%o\n",i,*p++);
+#endif
}
#ifdef REGVARS
regsave(regstr,off,size) char *regstr; long off; {
- fprintf(codefile,"/ Local %ld into %s\n",off,regstr);
+ fprintf(codefile,"%c Local %ld into %s\n",COMMENTCHAR,off,regstr);
/* commented away
#ifndef REGPATCH
fprintf(codefile,"mov %s,-(sp)\n",regstr);
return ;
default:
strarg(argt) ;
+#ifdef ACK_ASS
+ fprintf(codefile,".define %s\n",argstr) ;
+#else
fprintf(codefile,".globl %s\n",argstr) ;
+#endif
break ;
}
}
/* $Header$ */
+/* The next define switches between codegeneration for an ACK assembler
+ * or for the standard UNIX V7 assembler.
+ * If on code is generated for the ACK assembler.
+ */
+/* #define ACK_ASS /* code for ACK assembler */
+
+#ifdef ACK_ASS
+#define COMMENTCHAR '!'
+#define ex_ap(y) fprintf(codefile,".extern %s\n",y)
+#else
+#define COMMENTCHAR '/'
#define ex_ap(y) fprintf(codefile,".globl %s\n",y)
+#endif
#define in_ap(y) /* nothing */
#define newplb(x) fprintf(codefile,"%s:\n",x)
#define newilb(x) fprintf(codefile,"%s:\n",x)
#define newdlb(x) fprintf(codefile,"%s:\n",x)
+#ifdef ACK_ASS
+#define newlbss(l,x) fprintf(codefile,"%s:.space 0%o\n",l,x);
+#else
#define newlbss(l,x) fprintf(codefile,"%s:.=.+0%o\n",l,x);
+#endif
#define cst_fmt "$0%o"
#define off_fmt "0%o"
#define hol_off "0%o+hol%d"
+#ifdef ACK_ASS
+#define con_cst(x) fprintf(codefile,".short 0%o\n",x)
+#define con_ilb(x) fprintf(codefile,".short %s\n",x)
+#define con_dlb(x) fprintf(codefile,".short %s\n",x)
+#else
#define con_cst(x) fprintf(codefile,"0%o\n",x)
#define con_ilb(x) fprintf(codefile,"%s\n",x)
#define con_dlb(x) fprintf(codefile,"%s\n",x)
+#endif
#define id_first '_'
#define BSS_INIT 0