7 fmtinstall('R', Rconv);
8 fmtinstall('A', Aconv);
9 fmtinstall('D', Dconv);
10 fmtinstall('S', Sconv);
11 fmtinstall('P', Pconv);
22 p = va_arg(fp->args, Prog*);
24 snprint(str, sizeof str, "(%ld) %A %D,%D",
25 p->line, p->as, &p->from, &p->to);
27 return fmtprint(fp, "%s,%d,%d", str, p->to.field, p->from.field);
29 return fmtstrcpy(fp, str);
35 return fmtstrcpy(fp, anames[va_arg(fp->args, int)]);
46 a = va_arg(fp->args, Adr*);
55 snprint(str, sizeof str, "(%D)+", a);
59 snprint(str, sizeof str, "-(%D)", a);
64 snprint(str, sizeof str, "%ld(%D)", d, a);
66 snprint(str, sizeof str, "(%D)", a);
71 snprint(str, sizeof str, "$%D", a);
81 snprint(str, sizeof str, "%R", i);
89 if(bigP != P && bigP->pcond != P)
91 snprint(str, sizeof str, "%lux+%s", bigP->pcond->pc,
94 snprint(str, sizeof str, "%lux", bigP->pcond->pc);
96 snprint(str, sizeof str, "%ld(PC)", a->offset);
100 snprint(str, sizeof str, "%s+%ld(SB)", a->sym->name, a->offset);
104 snprint(str, sizeof str, "%s<%d>+%ld(SB)", a->sym->name,
105 a->sym->version, a->offset);
109 snprint(str, sizeof str, "%s+%ld(SP)", a->sym->name, a->offset);
114 snprint(str, sizeof str, "%s+%ld(FP)", a->sym->name, a->offset);
116 snprint(str, sizeof str, "%ld(FP)", a->offset);
120 snprint(str, sizeof str, "$%ld", a->offset);
124 snprint(str, sizeof str, "TOS+%ld", a->offset);
128 snprint(str, sizeof str, "$Q%ld", a->offset);
132 snprint(str, sizeof str, "$(%.8lux,%.8lux)", a->ieee.h, a->ieee.l);
136 snprint(str, sizeof str, "$\"%S\"", a->scon);
140 return fmtprint(fp, "%s/%ld", str, a->displace);
142 return fmtstrcpy(fp, str);
151 r = va_arg(fp->args, int);
152 if(r >= D_R0 && r < D_R0+NREG)
153 snprint(str, sizeof str, "R%d", r-D_R0);
155 if(r >= D_A0 && r < D_A0+NREG)
156 snprint(str, sizeof str, "A%d", r-D_A0);
158 if(r >= D_F0 && r < D_F0+NREG)
159 snprint(str, sizeof str, "F%d", r-D_F0);
164 snprint(str, sizeof str, "gok(%d)", r);
168 snprint(str, sizeof str, "NONE");
172 snprint(str, sizeof str, "TOS");
176 snprint(str, sizeof str, "CCR");
180 snprint(str, sizeof str, "SR");
184 snprint(str, sizeof str, "SFC");
188 snprint(str, sizeof str, "DFC");
192 snprint(str, sizeof str, "CACR");
196 snprint(str, sizeof str, "USP");
200 snprint(str, sizeof str, "VBR");
204 snprint(str, sizeof str, "CAAR");
208 snprint(str, sizeof str, "MSP");
212 snprint(str, sizeof str, "ISP");
216 snprint(str, sizeof str, "FPCR");
220 snprint(str, sizeof str, "FPSR");
224 snprint(str, sizeof str, "FPIAR");
228 snprint(str, sizeof str, "TREE");
232 snprint(str, sizeof str, "TC");
236 snprint(str, sizeof str, "ITT0");
240 snprint(str, sizeof str, "ITT1");
244 snprint(str, sizeof str, "DTT0");
248 snprint(str, sizeof str, "DTT1");
252 snprint(str, sizeof str, "MMUSR");
255 snprint(str, sizeof str, "URP");
259 snprint(str, sizeof str, "SRP");
262 return fmtstrcpy(fp, str);
269 char str[30], *p, *a;
271 a = va_arg(fp->args, char*);
273 for(i=0; i<sizeof(double); i++) {
275 if(c >= 'a' && c <= 'z' ||
276 c >= 'A' && c <= 'Z' ||
277 c >= '0' && c <= '9') {
284 if(c < 040 || c >= 0177)
285 break; /* not portable */
303 *p++ = ((c>>3) & 7) + '0';
304 *p++ = (c & 7) + '0';
307 return fmtstrcpy(fp, str);
313 char buf[STRINGSZ], *tn;
317 if(curtext != P && curtext->from.sym != S)
318 tn = curtext->from.sym->name;
320 vseprint(buf, buf+sizeof(buf), fmt, arg);
322 print("%s: %s\n", tn, buf);
326 print("too many errors\n");