8 fmtinstall('R', Rconv);
9 fmtinstall('A', Aconv);
10 fmtinstall('D', Dconv);
11 fmtinstall('P', Pconv);
12 fmtinstall('S', Sconv);
13 fmtinstall('B', Bconv);
19 char str[STRINGSZ], ss[STRINGSZ], *s;
23 memset(str, 0, sizeof str);
24 bits = va_arg(fp->args, Bits);
28 strncat(str, " ", sizeof str - 1);
30 snprint(ss, sizeof ss, "$%ld", var[i].offset);
34 strncat(str, s, sizeof str - 1);
35 bits.b[i/32] &= ~(1L << (i%32));
37 return fmtstrcpy(fp, str);
46 p = va_arg(fp->args, Prog*);
47 snprint(str, sizeof str, " %A %D,%D", p->as, &p->from, &p->to);
49 return fmtprint(fp, "%s,%d,%d", str, p->to.field, p->from.field);
50 return fmtstrcpy(fp, str);
58 r = va_arg(fp->args, int);
59 return fmtstrcpy(fp, anames[r]);
70 a = va_arg(fp->args, Adr*);
79 snprint(str, sizeof str, "(%D)+", a);
83 snprint(str, sizeof str, "-(%D)", a);
87 if(a->type == D_CONST)
88 snprint(str, sizeof str, "%ld", d);
91 snprint(str, sizeof str, "%ld(%D)", d, a);
93 snprint(str, sizeof str, "(%D)", a);
98 snprint(str, sizeof str, "$%D", a);
108 snprint(str, sizeof str, "%R", i);
116 snprint(str, sizeof str, "%ld(PC)", a->offset-pc);
120 snprint(str, sizeof str, "%s+%ld(SB)", a->sym->name, a->offset);
124 snprint(str, sizeof str, "%s<>+%ld(SB)", a->sym->name, a->offset);
128 snprint(str, sizeof str, "%s-%ld(SP)", a->sym->name, -a->offset);
132 snprint(str, sizeof str, "%s+%ld(FP)", a->sym->name, a->offset);
136 snprint(str, sizeof str, "$%ld", a->offset);
140 snprint(str, sizeof str, "TOS+%ld", a->offset);
144 snprint(str, sizeof str, "$%.17e", a->dval);
148 snprint(str, sizeof str, "$\"%S\"", a->sval);
152 return fmtprint(fp, "%s/%ld", str, a->displace);
154 return fmtstrcpy(fp, str);
163 r = va_arg(fp->args, int);
164 if(r >= D_R0 && r < D_R0+NREG)
165 snprint(str, sizeof str, "R%d", r-D_R0);
167 if(r >= D_A0 && r < D_A0+NREG)
168 snprint(str, sizeof str, "A%d", r-D_A0);
170 if(r >= D_F0 && r < D_F0+NREG)
171 snprint(str, sizeof str, "F%d", r-D_F0);
176 snprint(str, sizeof str, "gok(%d)", r);
180 snprint(str, sizeof str, "NONE");
184 snprint(str, sizeof str, "TOS");
188 snprint(str, sizeof str, "CCR");
192 snprint(str, sizeof str, "SR");
196 snprint(str, sizeof str, "SFC");
200 snprint(str, sizeof str, "DFC");
204 snprint(str, sizeof str, "CACR");
208 snprint(str, sizeof str, "USP");
212 snprint(str, sizeof str, "VBR");
216 snprint(str, sizeof str, "CAAR");
220 snprint(str, sizeof str, "MSP");
224 snprint(str, sizeof str, "ISP");
228 snprint(str, sizeof str, "TREE");
232 snprint(str, sizeof str, "FPCR");
236 snprint(str, sizeof str, "FPSR");
240 snprint(str, sizeof str, "FPIAR");
244 snprint(str, sizeof str, "TC");
248 snprint(str, sizeof str, "ITT0");
252 snprint(str, sizeof str, "ITT1");
256 snprint(str, sizeof str, "DTT0");
260 snprint(str, sizeof str, "DTT1");
264 snprint(str, sizeof str, "MMUSR");
267 snprint(str, sizeof str, "URP");
271 snprint(str, sizeof str, "SRP");
274 return fmtstrcpy(fp, str);
281 char str[30], *p, *s;
283 s = va_arg(fp->args, char*);
285 for(i=0; i<sizeof(double); i++) {
287 if(c != '\\' && c != '"' && isprint(c)) {
307 *p++ = ((c>>6) & 7) + '0';
308 *p++ = ((c>>3) & 7) + '0';
309 *p++ = ((c>>0) & 7) + '0';
312 return fmtstrcpy(fp, str);