8 fmtinstall('A', Aconv);
9 fmtinstall('P', Pconv);
10 fmtinstall('S', Sconv);
11 fmtinstall('N', Nconv);
12 fmtinstall('D', Dconv);
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);
43 char str[STRINGSZ], *s;
47 p = va_arg(fp->args, Prog*);
50 snprint(str, sizeof str, " %A %D/%d,%D", a, &p->from, p->reg, &p->to);
51 else if(p->as == ATEXT)
52 snprint(str, sizeof str, " %A %D,%d,%D", a, &p->from, p->reg, &p->to);
54 s = seprint(str, str+sizeof(str), " %A %D", a, &p->from);
56 s = seprint(s, str+sizeof(str), ",%c%d", p->from.type==D_FREG? 'F': 'R', p->reg);
57 if(p->from3.type != D_NONE)
58 s = seprint(s, str+sizeof(str), ",%D", &p->from3);
59 seprint(s, s+sizeof(str), ",%D", &p->to);
61 return fmtstrcpy(fp, str);
70 a = va_arg(fp->args, int);
72 if(a >= AXXX && a <= ALAST)
74 return fmtstrcpy(fp, s);
83 a = va_arg(fp->args, Adr*);
87 snprint(str, sizeof str, "GOK-type(%d)", a->type);
92 if(a->name != D_NONE || a->reg != NREG || a->sym != S)
93 snprint(str, sizeof str, "%N(R%d)(NONE)", a, a->reg);
98 snprint(str, sizeof str, "$%N(R%d)", a, a->reg);
100 snprint(str, sizeof str, "$%N", a);
105 snprint(str, sizeof str, "%N(R%d)", a, a->reg);
107 snprint(str, sizeof str, "%N", a);
111 snprint(str, sizeof str, "R%d", a->reg);
112 if(a->name != D_NONE || a->sym != S)
113 snprint(str, sizeof str, "%N(R%d)(REG)", a, a->reg);
117 snprint(str, sizeof str, "F%d", a->reg);
118 if(a->name != D_NONE || a->sym != S)
119 snprint(str, sizeof str, "%N(F%d)(REG)", a, a->reg);
123 snprint(str, sizeof str, "C%d", a->reg);
124 if(a->name != D_NONE || a->sym != S)
125 snprint(str, sizeof str, "%N(C%d)(REG)", a, a->reg);
129 snprint(str, sizeof str, "%ld(PC)", a->offset-pc);
133 snprint(str, sizeof str, "$%.17e", a->dval);
137 snprint(str, sizeof str, "$\"%S\"", a->sval);
140 return fmtstrcpy(fp, str);
147 char str[STRINGSZ], *p, *a;
149 a = va_arg(fp->args, char*);
151 for(i=0; i<NSNAME; i++) {
153 if(c >= 'a' && c <= 'z' ||
154 c >= 'A' && c <= 'Z' ||
155 c >= '0' && c <= '9' ||
156 c == ' ' || c == '%') {
183 *p++ = ((c>>3) & 7) + '0';
184 *p++ = (c & 7) + '0';
187 return fmtstrcpy(fp, str);
198 a = va_arg(fp->args, Adr*);
201 if(a->offset > 64 || -a->offset > 64) {
205 b = (a->offset >> i) & 1;
211 snprint(str, sizeof str, "%#lux", a->offset);
215 snprint(str, sizeof str, "%ld", a->offset);
220 snprint(str, sizeof str, "GOK-name(%d)", a->name);
224 snprint(str, sizeof str, "%s+%ld(SB)", s->name, a->offset);
228 snprint(str, sizeof str, "%s<>+%ld(SB)", s->name, a->offset);
232 snprint(str, sizeof str, "%s-%ld(SP)", s->name, -a->offset);
236 snprint(str, sizeof str, "%s+%ld(FP)", s->name, a->offset);
240 return fmtstrcpy(fp, str);