diff options
Diffstat (limited to 'src/cmd/8l/span.c')
-rw-r--r-- | src/cmd/8l/span.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cmd/8l/span.c b/src/cmd/8l/span.c index b828d8645..0678fa8f2 100644 --- a/src/cmd/8l/span.c +++ b/src/cmd/8l/span.c @@ -1003,11 +1003,23 @@ found: *andptr++ = op; break; + case Zlitm_r: + for(; op = o->op[z]; z++) + *andptr++ = op; + asmand(&p->from, reg[p->to.type]); + break; + case Zm_r: *andptr++ = op; asmand(&p->from, reg[p->to.type]); break; + case Zm2_r: + *andptr++ = op; + *andptr++ = o->op[z+1]; + asmand(&p->from, reg[p->to.type]); + break; + case Zm_r_xm: mediaop(o, op, t[3], z); asmand(&p->from, reg[p->to.type]); @@ -1019,6 +1031,13 @@ found: *andptr++ = p->to.offset; break; + case Zibm_r: + while ((op = o->op[z++]) != 0) + *andptr++ = op; + asmand(&p->from, reg[p->to.type]); + *andptr++ = p->to.offset; + break; + case Zaut_r: *andptr++ = 0x8d; /* leal */ if(p->from.type != D_ADDR) |