8 fmtinstall('A', Aconv);
9 fmtinstall('B', Bconv);
10 fmtinstall('P', Pconv);
11 fmtinstall('S', Sconv);
12 fmtinstall('D', Dconv);
13 fmtinstall('R', Rconv);
22 bits = va_arg(fp->args, Bits);
25 bits.b[i/32] &= ~(1L << (i%32));
27 fmtprint(fp, "$%ld ", var[i].offset);
29 fmtprint(fp, "%s ", var[i].sym->name);
39 p = va_arg(fp->args, Prog*);
41 return fmtprint(fp, " %A %D/%d,%D",
42 p->as, &p->from, p->from.scale, &p->to);
43 else if(p->as == ATEXT)
44 return fmtprint(fp, " %A %D,%d,%D",
45 p->as, &p->from, p->from.scale, &p->to);
47 return fmtprint(fp, " %A %D,%D",
48 p->as, &p->from, &p->to);
56 i = va_arg(fp->args, int);
57 return fmtstrcpy(fp, anames[i]);
67 a = va_arg(fp->args, Adr*);
71 snprint(str, sizeof(str), "%ld(%R)", a->offset, i-D_INDIR);
73 snprint(str, sizeof(str), "(%R)", i-D_INDIR);
80 snprint(str, sizeof(str), "$%ld,%R", a->offset, i);
82 snprint(str, sizeof(str), "%R", i);
90 snprint(str, sizeof(str), "%ld(PC)", a->offset-pc);
94 snprint(str, sizeof(str), "%s+%ld(SB)", a->sym->name, a->offset);
98 snprint(str, sizeof(str), "%s<>+%ld(SB)", a->sym->name, a->offset);
102 snprint(str, sizeof(str), "%s+%ld(SP)", a->sym->name, a->offset);
107 snprint(str, sizeof(str), "%s+%ld(FP)", a->sym->name, a->offset);
109 snprint(str, sizeof(str), "%ld(FP)", a->offset);
113 snprint(str, sizeof(str), "$%ld", a->offset);
117 snprint(str, sizeof(str), "$(%.17e)", a->dval);
121 snprint(str, sizeof(str), "$\"%S\"", a->sval);
127 snprint(str, sizeof(str), "$%D", a);
133 if(a->index != D_NONE)
134 return fmtprint(fp, "%s(%R*%d)", str, (int)a->index, (int)a->scale);
136 return fmtstrcpy(fp, str);
216 r = va_arg(fp->args, int);
217 if(r >= D_AL && r <= D_NONE)
218 return fmtprint(fp, "%s", regstr[r-D_AL]);
220 return fmtprint(fp, "gok(%d)", r);
227 char str[30], *p, *a;
229 a = va_arg(fp->args, char*);
231 for(i=0; i<sizeof(double); i++) {
233 if(c >= 'a' && c <= 'z' ||
234 c >= 'A' && c <= 'Z' ||
235 c >= '0' && c <= '9') {
242 if(c < 040 || c >= 0177)
243 break; /* not portable */
261 *p++ = ((c>>3) & 7) + '0';
262 *p++ = (c & 7) + '0';
265 return fmtstrcpy(fp, str);