8 fmtinstall('A', Aconv);
9 fmtinstall('B', Bconv);
10 fmtinstall('P', Pconv);
11 fmtinstall('S', Sconv);
12 fmtinstall('D', Dconv);
13 fmtinstall('R', Rconv);
19 char str[STRINGSZ], ss[STRINGSZ], *s;
24 bits = va_arg(fp->args, Bits);
30 sprint(ss, "$%ld", var[i].offset);
34 if(strlen(str) + strlen(s) + 1 >= STRINGSZ)
37 bits.b[i/32] &= ~(1L << (i%32));
39 return fmtstrcpy(fp, str);
48 p = va_arg(fp->args, Prog*);
50 sprint(str, " %A %D/%d,%D",
51 p->as, &p->from, p->from.scale, &p->to);
52 else if(p->as == ATEXT)
53 sprint(str, " %A %D,%d,%D",
54 p->as, &p->from, p->from.scale, &p->to);
56 sprint(str, " %A %D,%D",
57 p->as, &p->from, &p->to);
58 return fmtstrcpy(fp, str);
66 i = va_arg(fp->args, int);
67 return fmtstrcpy(fp, anames[i]);
77 a = va_arg(fp->args, Adr*);
81 sprint(str, "%ld(%R)", a->offset, i-D_INDIR);
83 sprint(str, "(%R)", i-D_INDIR);
90 sprint(str, "$%ld,%R", a->offset, i);
100 sprint(str, "%ld(PC)", a->offset-pc);
104 sprint(str, "%s+%ld(SB)", a->sym->name, a->offset);
108 sprint(str, "%s<>+%ld(SB)", a->sym->name,
113 sprint(str, "%s+%ld(SP)", a->sym->name, a->offset);
118 sprint(str, "%s+%ld(FP)", a->sym->name, a->offset);
120 sprint(str, "%ld(FP)", a->offset);
124 sprint(str, "$%ld", a->offset);
128 sprint(str, "$(%.17e)", a->dval);
132 sprint(str, "$\"%S\"", a->sval);
138 sprint(str, "$%D", a);
144 if(a->index != D_NONE) {
145 sprint(s, "(%R*%d)", (int)a->index, (int)a->scale);
149 return fmtstrcpy(fp, str);
230 r = va_arg(fp->args, int);
231 if(r >= D_AL && r <= D_NONE)
232 sprint(str, "%s", regstr[r-D_AL]);
234 sprint(str, "gok(%d)", r);
236 return fmtstrcpy(fp, str);
243 char str[30], *p, *a;
245 a = va_arg(fp->args, char*);
247 for(i=0; i<sizeof(double); i++) {
249 if(c >= 'a' && c <= 'z' ||
250 c >= 'A' && c <= 'Z' ||
251 c >= '0' && c <= '9') {
258 if(c < 040 || c >= 0177)
259 break; /* not portable */
277 *p++ = ((c>>3) & 7) + '0';
278 *p++ = (c & 7) + '0';
281 return fmtstrcpy(fp, str);