7 fmtinstall('R', Rconv);
8 fmtinstall('A', Aconv);
9 fmtinstall('D', Dconv);
10 fmtinstall('S', Sconv);
11 fmtinstall('P', Pconv);
19 char str[STRINGSZ], s[20];
22 p = va_arg(fp->args, Prog*);
24 sprint(str, "(%ld) %A %D,%D",
25 p->line, p->as, &p->from, &p->to);
27 sprint(s, ",%d,%d", p->to.field, p->from.field);
31 return fmtstrcpy(fp, str);
38 return fmtstrcpy(fp, anames[va_arg(fp->args, int)]);
49 a = va_arg(fp->args, Adr*);
58 sprint(str, "(%D)+", a);
62 sprint(str, "-(%D)", a);
67 sprint(str, "%ld(%D)", d, a);
69 sprint(str, "(%D)", a);
74 sprint(str, "$%D", a);
92 if(bigP != P && bigP->pcond != P)
94 sprint(str, "%lux+%s", bigP->pcond->pc,
97 sprint(str, "%lux", bigP->pcond->pc);
99 sprint(str, "%ld(PC)", a->offset);
103 sprint(str, "%s+%ld(SB)", a->sym->name, a->offset);
107 sprint(str, "%s<%d>+%ld(SB)", a->sym->name,
108 a->sym->version, a->offset);
112 sprint(str, "%s+%ld(SP)", a->sym->name, a->offset);
117 sprint(str, "%s+%ld(FP)", a->sym->name, a->offset);
119 sprint(str, "%ld(FP)", a->offset);
123 sprint(str, "$%ld", a->offset);
127 sprint(str, "TOS+%ld", a->offset);
131 sprint(str, "$Q%ld", a->offset);
135 sprint(str, "$(%.8lux,%.8lux)", a->ieee.h, a->ieee.l);
139 sprint(str, "$\"%S\"", a->scon);
143 sprint(s, "/%ld", a->displace);
147 return fmtstrcpy(fp, str);
156 r = va_arg(fp->args, int);
157 if(r >= D_R0 && r < D_R0+NREG)
158 sprint(str, "R%d", r-D_R0);
160 if(r >= D_A0 && r < D_A0+NREG)
161 sprint(str, "A%d", r-D_A0);
163 if(r >= D_F0 && r < D_F0+NREG)
164 sprint(str, "F%d", r-D_F0);
169 sprint(str, "gok(%d)", r);
229 sprint(str, "FPIAR");
257 sprint(str, "MMUSR");
267 return fmtstrcpy(fp, str);
274 char str[30], *p, *a;
276 a = va_arg(fp->args, char*);
278 for(i=0; i<sizeof(double); i++) {
280 if(c >= 'a' && c <= 'z' ||
281 c >= 'A' && c <= 'Z' ||
282 c >= '0' && c <= '9') {
289 if(c < 040 || c >= 0177)
290 break; /* not portable */
308 *p++ = ((c>>3) & 7) + '0';
309 *p++ = (c & 7) + '0';
312 return fmtstrcpy(fp, str);
318 char buf[STRINGSZ], *tn;
322 if(curtext != P && curtext->from.sym != S)
323 tn = curtext->from.sym->name;
325 vseprint(buf, buf+sizeof(buf), fmt, arg);
327 print("%s: %s\n", tn, buf);
331 print("too many errors\n");