7 fmtinstall('A', Aconv);
8 fmtinstall('D', Dconv);
9 fmtinstall('P', Pconv);
10 fmtinstall('S', Sconv);
11 fmtinstall('N', Nconv);
27 p = va_arg(fp->args, Prog*);
30 if(a == ADATA || a == AINIT || a == ADYNT)
31 snprint(str, sizeof str, " %A %D/%d,%D", a, &p->from, p->reg, &p->to);
34 snprint(str, sizeof str, "%s %A %D,%D",
35 p->mark & NOSCHED ? "*" : "", a,
38 if(p->from.type == D_OREG) {
39 snprint(str, sizeof str, "%s %A %ld(R%d+R%d),%D",
40 p->mark & NOSCHED ? "*" : "", a,
41 p->from.offset, p->from.reg, p->reg, &p->to);
43 if(p->to.type == D_OREG) {
44 snprint(str, sizeof str, "%s %A %D,%ld(R%d+R%d)",
45 p->mark & NOSCHED ? "*" : "", a,
46 &p->from, p->to.offset, p->to.reg, p->reg);
48 if(p->from.type == D_FREG)
49 snprint(str, sizeof str, "%s %A %D,F%d,%D",
50 p->mark & NOSCHED ? "*" : "", a,
51 &p->from, p->reg, &p->to);
53 snprint(str, sizeof str, "%s %A %D,R%d,%D",
54 p->mark & NOSCHED ? "*" : "", a,
55 &p->from, p->reg, &p->to);
57 return fmtstrcpy(fp, str);
66 a = va_arg(fp->args, int);
68 if(a >= AXXX && a <= ALAST)
70 return fmtstrcpy(fp, s);
80 a = va_arg(fp->args, Adr*);
84 snprint(str, sizeof str, "GOK-type(%d)", a->type);
89 if(a->name != D_NONE || a->reg != NREG || a->sym != S)
90 snprint(str, sizeof str, "%N(R%d)(NONE)", a, a->reg);
95 snprint(str, sizeof str, "$%N(R%d)", a, a->reg);
97 snprint(str, sizeof str, "$%N", a);
102 snprint(str, sizeof str, "(R%d,%ld)", a->reg, a->offset);
104 snprint(str, sizeof str, "(R%d,%ld)", 0, a->offset);
109 snprint(str, sizeof str, "%N(R%d)", a, a->reg);
111 snprint(str, sizeof str, "%N", a);
115 snprint(str, sizeof str, "R%d", a->reg);
116 if(a->name != D_NONE || a->sym != S)
117 snprint(str, sizeof str, "%N(R%d)(REG)", a, a->reg);
121 snprint(str, sizeof str, "F%d", a->reg);
122 if(a->name != D_NONE || a->sym != S)
123 snprint(str, sizeof str, "%N(F%d)(REG)", a, a->reg);
127 snprint(str, sizeof str, "C%d", a->reg);
128 if(a->name != D_NONE || a->sym != S)
129 snprint(str, sizeof str, "%N(C%d)(REG)", a, a->reg);
133 snprint(str, sizeof str, "P%d", a->reg);
134 if(a->name != D_NONE || a->sym != S)
135 snprint(str, sizeof str, "%N(P%d)(REG)", a, a->reg);
139 if(curp->cond != P) {
144 snprint(str, sizeof str, "%s+%.5lux(BRANCH)", a->sym->name, v);
146 snprint(str, sizeof str, "%.5lux(BRANCH)", v);
149 snprint(str, sizeof str, "%s+%ld(APC)", a->sym->name, a->offset);
151 snprint(str, sizeof str, "%ld(APC)", a->offset);
155 snprint(str, sizeof str, "$%lux-%lux", a->ieee.h, a->ieee.l);
159 snprint(str, sizeof str, "$\"%S\"", a->sval);
162 return fmtstrcpy(fp, str);
172 a = va_arg(fp->args, Adr*);
175 snprint(str, sizeof str, "%ld", a->offset);
180 snprint(str, sizeof str, "GOK-name(%d)", a->name);
184 snprint(str, sizeof str, "%s+%ld(SB)", s->name, a->offset);
188 snprint(str, sizeof str, "%s<>+%ld(SB)", s->name, a->offset);
192 snprint(str, sizeof str, "%s-%ld(SP)", s->name, -a->offset);
196 snprint(str, sizeof str, "%s+%ld(FP)", s->name, a->offset);
200 return fmtstrcpy(fp, str);
207 char str[STRINGSZ], *p, *a;
209 a = va_arg(fp->args, char*);
211 for(i=0; i<sizeof(long); i++) {
213 if(c >= 'a' && c <= 'z' ||
214 c >= 'A' && c <= 'Z' ||
215 c >= '0' && c <= '9' ||
216 c == ' ' || c == '%') {
237 *p++ = ((c>>3) & 7) + '0';
238 *p++ = (c & 7) + '0';
241 return fmtstrcpy(fp, str);
247 char buf[STRINGSZ], *tn;
251 if(curtext != P && curtext->from.sym != S)
252 tn = curtext->from.sym->name;
254 vseprint(buf, buf+sizeof(buf), fmt, arg);
256 print("%s: %s\n", tn, buf);
260 print("too many errors\n");