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;
35 bits = va_arg(fp->args, Bits);
41 sprint(ss, "$%ld", var[i].offset);
45 if(strlen(str) + strlen(s) + 1 >= STRINGSZ)
48 bits.b[i/32] &= ~(1L << (i%32));
50 return fmtstrcpy(fp, str);
56 char str[STRINGSZ], s[20];
59 p = va_arg(fp->args, Prog*);
60 sprint(str, " %A %D,%D", p->as, &p->from, &p->to);
62 sprint(s, ",%d,%d", p->to.field, p->from.field);
65 return fmtstrcpy(fp, str);
73 r = va_arg(fp->args, int);
74 return fmtstrcpy(fp, anames[r]);
84 x = va_arg(fp->args, Index);
88 sprint(str, "(%R.", i);
95 return fmtstrcpy(fp, str);
106 a = va_arg(fp->args, Adr*);
115 sprint(str, "???%ld(%D%X)", d, a, indexv(i, j));
119 sprint(str, "%D%X", a, indexv(i, a->scale));
124 sprint(str, "%ld(%D)%X", d, a, indexv(i, j));
126 sprint(str, "(%D)%X", a, indexv(i, j));
131 sprint(str, "%ld(%D%X)", d, a, indexv(i, j));
133 sprint(str, "(%D%X)", a, indexv(i, j));
143 a->type = i & D_MASK;
148 sprint(str, "(%D)+", a);
152 sprint(str, "-(%D)", a);
156 if(a->type == D_CONST)
157 sprint(str, "%ld", d);
160 sprint(str, "%ld(%D)", d, a);
162 sprint(str, "(%D)", a);
167 sprint(str, "$%D", a);
177 sprint(str, "%R", i);
185 sprint(str, "%ld(PC)", a->offset-pc);
189 sprint(str, "%s+%ld(SB)", a->sym->name, a->offset);
193 sprint(str, "%s<>+%ld(SB)", a->sym->name, a->offset);
197 sprint(str, "%s-%ld(SP)", a->sym->name, -a->offset);
201 sprint(str, "%s+%ld(FP)", a->sym->name, a->offset);
205 sprint(str, "$%ld", a->offset);
209 sprint(str, "TOS+%ld", a->offset);
213 sprint(str, "$%.17e", a->dval);
217 sprint(str, "$\"%S\"", a->sval);
221 sprint(s, "/%ld", a->displace);
225 return fmtstrcpy(fp, str);
234 r = va_arg(fp->args, int);
235 if(r >= D_R0 && r < D_R0+NREG)
236 sprint(str, "R%d", r-D_R0);
238 if(r >= D_A0 && r < D_A0+NREG)
239 sprint(str, "A%d", r-D_A0);
241 if(r >= D_F0 && r < D_F0+NREG)
242 sprint(str, "F%d", r-D_F0);
247 sprint(str, "gok(%d)", r);
311 sprint(str, "FPIAR");
335 sprint(str, "MMUSR");
345 return fmtstrcpy(fp, str);
352 char str[30], *p, *s;
354 s = va_arg(fp->args, char*);
356 for(i=0; i<sizeof(double); i++) {
358 if(c != '\\' && c != '"' && isprint(c)) {
378 *p++ = ((c>>6) & 7) + '0';
379 *p++ = ((c>>3) & 7) + '0';
380 *p++ = ((c>>0) & 7) + '0';
383 return fmtstrcpy(fp, str);