7 fmtinstall('A', Aconv);
8 fmtinstall('P', Pconv);
9 fmtinstall('S', Sconv);
10 fmtinstall('N', Nconv);
11 fmtinstall('B', Bconv);
12 fmtinstall('D', Dconv);
18 char str[STRINGSZ], ss[STRINGSZ], *s;
23 bits = va_arg(fp->args, Bits);
29 sprint(ss, "$%ld", var[i].offset);
33 if(strlen(str) + strlen(s) + 1 >= STRINGSZ)
36 bits.b[i/32] &= ~(1L << (i%32));
38 return fmtstrcpy(fp, str);
48 p = va_arg(fp->args, Prog*);
51 sprint(str, " %A %D/%d,%D", a, &p->from, p->reg, &p->to);
54 sprint(str, " %A %D,%d,%D", a, &p->from, p->reg, &p->to);
57 sprint(str, " %A %D,%D", a, &p->from, &p->to);
59 if(p->from.type != D_FREG)
60 sprint(str, " %A %D,R%d,%D", a, &p->from, p->reg, &p->to);
62 sprint(str, " %A %D,F%d,%D", a, &p->from, p->reg, &p->to);
63 return fmtstrcpy(fp, str);
72 a = va_arg(fp->args, int);
74 if(a >= AXXX && a < ALAST)
76 return fmtstrcpy(fp, s);
85 a = va_arg(fp->args, Adr*);
89 sprint(str, "GOK-type(%d)", a->type);
94 if(a->name != D_NONE || a->reg != NREG || a->sym != S)
95 sprint(str, "%N(R%d)(NONE)", a, a->reg);
100 sprint(str, "$%N(R%d)", a, a->reg);
102 sprint(str, "$%N", a);
107 sprint(str, "%N(R%d)", a, a->reg);
109 sprint(str, "%N", a);
113 sprint(str, "R%d", a->reg);
114 if(a->name != D_NONE || a->sym != S)
115 sprint(str, "%N(R%d)(REG)", a, a->reg);
119 sprint(str, "F%d", a->reg);
120 if(a->name != D_NONE || a->sym != S)
121 sprint(str, "%N(R%d)(REG)", a, a->reg);
125 sprint(str, "FCR%d", a->reg);
126 if(a->name != D_NONE || a->sym != S)
127 sprint(str, "%N(R%d)(REG)", a, a->reg);
132 if(a->name != D_NONE || a->sym != S)
133 sprint(str, "%N(LO)(REG)", a);
138 if(a->name != D_NONE || a->sym != S)
139 sprint(str, "%N(HI)(REG)", a);
143 sprint(str, "%ld(PC)", a->offset-pc);
147 sprint(str, "$%.17e", a->dval);
151 sprint(str, "$\"%S\"", a->sval);
154 return fmtstrcpy(fp, str);
161 char str[STRINGSZ], *p, *a;
163 a = va_arg(fp->args, char*);
165 for(i=0; i<NSNAME; i++) {
167 if(c >= 'a' && c <= 'z' ||
168 c >= 'A' && c <= 'Z' ||
169 c >= '0' && c <= '9' ||
170 c == ' ' || c == '%') {
197 *p++ = ((c>>3) & 7) + '0';
198 *p++ = (c & 7) + '0';
201 return fmtstrcpy(fp, str);
211 a = va_arg(fp->args, Adr*);
214 sprint(str, "%ld", a->offset);
219 sprint(str, "GOK-name(%d)", a->name);
223 sprint(str, "%ld", a->offset);
227 sprint(str, "%s+%ld(SB)", s->name, a->offset);
231 sprint(str, "%s<>+%ld(SB)", s->name, a->offset);
235 sprint(str, "%s-%ld(SP)", s->name, -a->offset);
239 sprint(str, "%s+%ld(FP)", s->name, a->offset);
243 return fmtstrcpy(fp, str);