8 fmtinstall('R', Rconv);
9 fmtinstall('A', Aconv);
10 fmtinstall('D', Dconv);
11 fmtinstall('P', Pconv);
12 fmtinstall('S', Sconv);
13 fmtinstall('X', Xconv);
14 fmtinstall('B', Bconv);
30 char str[STRINGSZ], ss[STRINGSZ], *s;
34 memset(str, 0, sizeof str);
35 bits = va_arg(fp->args, Bits);
39 strncat(str, " ", sizeof str - 1);
41 snprint(ss, sizeof ss, "$%ld", var[i].offset);
45 strncat(str, s, sizeof str - 1);
46 bits.b[i/32] &= ~(1L << (i%32));
48 return fmtstrcpy(fp, str);
57 p = va_arg(fp->args, Prog*);
58 snprint(str, sizeof str, " %A %D,%D", p->as, &p->from, &p->to);
60 return fmtprint(fp, "%s,%d,%d", str, p->to.field, p->from.field);
61 return fmtstrcpy(fp, str);
69 r = va_arg(fp->args, int);
70 return fmtstrcpy(fp, anames[r]);
80 x = va_arg(fp->args, Index);
85 return fmtprint(fp, "(%R.%c*%c)", i, "WWWWLLLL"[j], "12481248"[j]);
87 return fmtstrcpy(fp, str);
98 a = va_arg(fp->args, Adr*);
107 snprint(str, sizeof str, "???%ld(%D%X)", d, a, indexv(i, j));
111 snprint(str, sizeof str, "%D%X", a, indexv(i, a->scale));
116 snprint(str, sizeof str, "%ld(%D)%X", d, a, indexv(i, j));
118 snprint(str, sizeof str, "(%D)%X", a, indexv(i, j));
123 snprint(str, sizeof str, "%ld(%D%X)", d, a, indexv(i, j));
125 snprint(str, sizeof str, "(%D%X)", a, indexv(i, j));
135 a->type = i & D_MASK;
140 snprint(str, sizeof str, "(%D)+", a);
144 snprint(str, sizeof str, "-(%D)", a);
148 if(a->type == D_CONST)
149 snprint(str, sizeof str, "%ld", d);
152 snprint(str, sizeof str, "%ld(%D)", d, a);
154 snprint(str, sizeof str, "(%D)", a);
159 snprint(str, sizeof str, "$%D", a);
169 snprint(str, sizeof str, "%R", i);
177 snprint(str, sizeof str, "%ld(PC)", a->offset-pc);
181 snprint(str, sizeof str, "%s+%ld(SB)", a->sym->name, a->offset);
185 snprint(str, sizeof str, "%s<>+%ld(SB)", a->sym->name, a->offset);
189 snprint(str, sizeof str, "%s-%ld(SP)", a->sym->name, -a->offset);
193 snprint(str, sizeof str, "%s+%ld(FP)", a->sym->name, a->offset);
197 snprint(str, sizeof str, "$%ld", a->offset);
201 snprint(str, sizeof str, "TOS+%ld", a->offset);
205 snprint(str, sizeof str, "$%.17e", a->dval);
209 snprint(str, sizeof str, "$\"%S\"", a->sval);
213 return fmtprint(fp, "%s/%ld", str, a->displace);
215 return fmtstrcpy(fp, str);
224 r = va_arg(fp->args, int);
225 if(r >= D_R0 && r < D_R0+NREG)
226 snprint(str, sizeof str, "R%d", r-D_R0);
228 if(r >= D_A0 && r < D_A0+NREG)
229 snprint(str, sizeof str, "A%d", r-D_A0);
231 if(r >= D_F0 && r < D_F0+NREG)
232 snprint(str, sizeof str, "F%d", r-D_F0);
237 snprint(str, sizeof str, "gok(%d)", r);
241 snprint(str, sizeof str, "NONE");
245 snprint(str, sizeof str, "TOS");
249 snprint(str, sizeof str, "CCR");
253 snprint(str, sizeof str, "SR");
257 snprint(str, sizeof str, "SFC");
261 snprint(str, sizeof str, "DFC");
265 snprint(str, sizeof str, "CACR");
269 snprint(str, sizeof str, "USP");
273 snprint(str, sizeof str, "VBR");
277 snprint(str, sizeof str, "CAAR");
281 snprint(str, sizeof str, "MSP");
285 snprint(str, sizeof str, "ISP");
289 snprint(str, sizeof str, "TREE");
293 snprint(str, sizeof str, "FPCR");
297 snprint(str, sizeof str, "FPSR");
301 snprint(str, sizeof str, "FPIAR");
305 snprint(str, sizeof str, "TC");
309 snprint(str, sizeof str, "ITT0");
313 snprint(str, sizeof str, "ITT1");
317 snprint(str, sizeof str, "DTT0");
321 snprint(str, sizeof str, "DTT1");
325 snprint(str, sizeof str, "MMUSR");
328 snprint(str, sizeof str, "URP");
332 snprint(str, sizeof str, "SRP");
335 return fmtstrcpy(fp, str);
342 char str[30], *p, *s;
344 s = va_arg(fp->args, char*);
346 for(i=0; i<sizeof(double); i++) {
348 if(c != '\\' && c != '"' && isprint(c)) {
368 *p++ = ((c>>6) & 7) + '0';
369 *p++ = ((c>>3) & 7) + '0';
370 *p++ = ((c>>0) & 7) + '0';
373 return fmtstrcpy(fp, str);