diff -r b51fd2d6c160 include/u.h --- a/include/u.h Tue Nov 10 20:05:24 2009 -0800 +++ b/include/u.h Wed Nov 11 19:17:22 2009 +0000 @@ -76,6 +76,8 @@ #define _NEEDUSHORT 1 #define _NEEDUINT 1 #define _NEEDULONG 1 +#define _NEEDINTNN 1 +#define _NEEDVLONG 1 typedef long p9jmp_buf[sizeof(sigjmp_buf)/sizeof(long)]; @@ -135,6 +137,15 @@ # undef _NEEDUSHORT # undef _NEEDUINT # undef _NEEDULONG +#elif defined(__HAIKU__) +# include +# include +# undef _NEEDUCHAR +# undef _NEEDUSHORT +# undef _NEEDUINT +# undef _NEEDULONG +# undef _NEEDINTNN +# undef _NEEDVLONG #else /* No idea what system this is -- try some defaults */ # include @@ -160,7 +171,9 @@ typedef unsigned long ulong; #endif typedef unsigned long long uvlong; +#ifdef _NEEDVLONG typedef long long vlong; +#endif typedef uint64_t u64int; typedef int64_t s64int; @@ -173,6 +186,7 @@ typedef uint32_t u32int; typedef int32_t s32int; +#ifdef _NEEDINTNN typedef s8int int8; typedef u8int uint8; typedef s16int int16; @@ -181,12 +195,14 @@ typedef u32int uint32; typedef s64int int64; typedef u64int uint64; - +#endif #undef _NEEDUCHAR #undef _NEEDUSHORT #undef _NEEDUINT #undef _NEEDULONG +#undef _NEEDINTNN +#undef _NEEDVLONG /* * Funny-named symbols to tip off 9l to autolink. diff -r b51fd2d6c160 src/Make.conf --- a/src/Make.conf Tue Nov 10 20:05:24 2009 -0800 +++ b/src/Make.conf Wed Nov 11 19:17:22 2009 +0000 @@ -7,6 +7,12 @@ CFLAGS=-ggdb -I$(GOROOT)/include -O2 -fno-inline O=o YFLAGS=-d +ifneq ($(GOOS),haiku) +LIBM=-lm +endif +ifeq ($(GOOS),haiku) +LIBNET=-lnetwork +endif # GNU Make syntax: ifndef GOBIN GOBIN=$(HOME)/bin diff -r b51fd2d6c160 src/all.bash --- a/src/all.bash Tue Nov 10 20:05:24 2009 -0800 +++ b/src/all.bash Wed Nov 11 19:17:22 2009 +0000 @@ -4,5 +4,5 @@ # license that can be found in the LICENSE file. set -e -bash make.bash -bash run.bash +$BASH make.bash +$BASH run.bash diff -r b51fd2d6c160 src/clean.bash --- a/src/clean.bash Tue Nov 10 20:05:24 2009 -0800 +++ b/src/clean.bash Wed Nov 11 19:17:22 2009 +0000 @@ -11,7 +11,7 @@ do( cd $i || exit 1 if test -f clean.bash; then - bash clean.bash + $BASH clean.bash else make clean fi diff -r b51fd2d6c160 src/cmd/5g/Makefile --- a/src/cmd/5g/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/5g/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -27,7 +27,7 @@ ../gc/gc.a$O $(TARG): $(OFILES) $(LIB) - $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9 -lm + $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9 $(LIBM) $(OFILES): $(HFILES) diff -r b51fd2d6c160 src/cmd/5l/mkenam --- a/src/cmd/5l/mkenam Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/5l/mkenam Wed Nov 11 19:17:22 2009 +0000 @@ -28,18 +28,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -ed - ../5l/5.out.h <<'!' -v/^ A/d -,s/^ A/ "/ -g/ .*$/s/// -,s/,*$/",/ -1i +/bin/sed '1a\ char* anames[] = +1a\ { -. -$a +$a\ }; -. -w enam.c -Q -! +/^ A/!d;s/A\([A-Z0-9]*\),*/"\1",/' ../5l/5.out.h > enam.c diff -r b51fd2d6c160 src/cmd/6g/Makefile --- a/src/cmd/6g/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/6g/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -28,7 +28,7 @@ ../gc/gc.a$O $(TARG): $(OFILES) $(LIB) - $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9 -lm + $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9 $(LIBM) $(OFILES): $(HFILES) diff -r b51fd2d6c160 src/cmd/6l/mkenam --- a/src/cmd/6l/mkenam Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/6l/mkenam Wed Nov 11 19:17:22 2009 +0000 @@ -28,18 +28,10 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -/bin/ed - ../6l/6.out.h <<'!' -v/^ A/d -,s/^ A/ "/ -g/ .*$/s/// -,s/,*$/",/ -1i +/bin/sed '1a\ char* anames[] = +1a\ { -. -$a +$a\ }; -. -w enam.c -Q -! +/^ A/!d;s/A\([A-Z0-9]*\),*/"\1",/' ../6l/6.out.h > enam.c diff -r b51fd2d6c160 src/cmd/8c/Makefile --- a/src/cmd/8c/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8c/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -32,7 +32,7 @@ ../cc/cc.a$O $(TARG): $(OFILES) $(LIB) - $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lm -lbio -l9 + $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) $(LIBM) $(LIBNET) -lbio -l9 $(OFILES): $(HFILES) diff -r b51fd2d6c160 src/cmd/8c/cgen.c --- a/src/cmd/8c/cgen.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8c/cgen.c Wed Nov 11 19:17:22 2009 +0000 @@ -1202,17 +1202,17 @@ } void -bcgen(Node *n, int true) +bcgen(Node *n, int yes) { if(n->type == T) gbranch(OGOTO); else - boolgen(n, true, Z); + boolgen(n, yes, Z); } void -boolgen(Node *n, int true, Node *nn) +boolgen(Node *n, int yes, Node *nn) { int o; Prog *p1, *p2; @@ -1230,11 +1230,11 @@ default: if(typev[n->type->etype]) { - testv(n, true); + testv(n, yes); goto com; } o = ONE; - if(true) + if(yes) o = OEQ; if(typefd[n->type->etype]) { if(n->addable < INDEXED) { @@ -1260,7 +1260,7 @@ case OCONST: o = vconst(n); - if(!true) + if(!yes) o = !o; gbranch(OGOTO); if(o) { @@ -1272,22 +1272,22 @@ case OCOMMA: cgen(l, Z); - boolgen(r, true, nn); + boolgen(r, yes, nn); break; case ONOT: - boolgen(l, !true, nn); + boolgen(l, !yes, nn); break; case OCOND: bcgen(l, 1); p1 = p; - bcgen(r->left, true); + bcgen(r->left, yes); p2 = p; gbranch(OGOTO); patch(p1, pc); p1 = p; - bcgen(r->right, !true); + bcgen(r->right, !yes); patch(p2, pc); p2 = p; gbranch(OGOTO); @@ -1296,13 +1296,13 @@ goto com; case OANDAND: - if(!true) + if(!yes) goto caseor; caseand: - bcgen(l, true); + bcgen(l, yes); p1 = p; - bcgen(r, !true); + bcgen(r, !yes); p2 = p; patch(p1, pc); gbranch(OGOTO); @@ -1310,13 +1310,13 @@ goto com; case OOROR: - if(!true) + if(!yes) goto caseand; caseor: - bcgen(l, !true); + bcgen(l, !yes); p1 = p; - bcgen(r, !true); + bcgen(r, !yes); p2 = p; gbranch(OGOTO); patch(p1, pc); @@ -1335,12 +1335,12 @@ case OLS: o = n->op; if(typev[l->type->etype]) { - if(!true) + if(!yes) n->op = comrel[relindex(o)]; cgen64(n, Z); goto com; } - if(true) + if(yes) o = comrel[relindex(o)]; if(l->complex >= FNX && r->complex >= FNX) { regret(&nod, r); @@ -1350,7 +1350,7 @@ regfree(&nod); nod = *n; nod.right = &nod1; - boolgen(&nod, true, nn); + boolgen(&nod, yes, nn); break; } if(typefd[l->type->etype]) { diff -r b51fd2d6c160 src/cmd/8c/cgen64.c --- a/src/cmd/8c/cgen64.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8c/cgen64.c Wed Nov 11 19:17:22 2009 +0000 @@ -1216,7 +1216,7 @@ /* Big Generator */ static void -biggen(Node *l, Node *r, Node *t, int true, uchar code[][VLEN], uchar *a) +biggen(Node *l, Node *r, Node *t, int yes, uchar code[][VLEN], uchar *a) { int i, j, g, oc, op, lo, ro, to, xo, *xp; Type *lt; @@ -1461,11 +1461,11 @@ break; case VT: - g = true; + g = yes; i++; break; case VF: - g = !true; + g = !yes; i++; break; @@ -1593,7 +1593,7 @@ { Type *dt; uchar *args, (*cp)[VLEN], (**optab)[VLEN]; - int li, ri, lri, dr, si, m, op, sh, cmp, true; + int li, ri, lri, dr, si, m, op, sh, cmp, yes; Node *c, *d, *l, *r, *t, *s, nod1, nod2, nod3, nod4, nod5; if(debug['g']) { @@ -2115,40 +2115,40 @@ break; } - true = 1; + yes = 1; optab = cmptab; switch(op) { case OEQ: optab = NEtab; - true = 0; + yes = 0; break; case ONE: optab = NEtab; break; case OLE: args = GTargs; - true = 0; + yes = 0; break; case OGT: args = GTargs; break; case OLS: args = HIargs; - true = 0; + yes = 0; break; case OHI: args = HIargs; break; case OLT: args = GEargs; - true = 0; + yes = 0; break; case OGE: args = GEargs; break; case OLO: args = HSargs; - true = 0; + yes = 0; break; case OHS: args = HSargs; @@ -2160,7 +2160,7 @@ switch(lri) { case IMM(0, 0): - biggen(l, r, Z, true, optab[T0i], args); + biggen(l, r, Z, yes, optab[T0i], args); break; case IMM(0, 1): case IMM(1, 0): @@ -2169,14 +2169,14 @@ diag(l, "bad whatof\n"); break; case WCONST: - biggen(l, r, Z, true, optab[T0i], args); + biggen(l, r, Z, yes, optab[T0i], args); break; case WHARD: reglcgen(&nod2, r, Z); r = &nod2; /* fall thru */ case WADDR: - biggen(l, r, Z, true, optab[T0i], args); + biggen(l, r, Z, yes, optab[T0i], args); if(ri == WHARD) regfree(r); break; @@ -2191,7 +2191,7 @@ reglcgen(&nod2, r, Z); r = &nod2; } - biggen(l, r, Z, true, optab[Tii], args); + biggen(l, r, Z, yes, optab[Tii], args); if(li == WHARD) regfree(l); if(ri == WHARD) @@ -2624,7 +2624,7 @@ } void -testv(Node *n, int true) +testv(Node *n, int yes) { Type *t; Node *nn, nod; @@ -2632,7 +2632,7 @@ switch(n->op) { case OINDREG: case ONAME: - biggen(n, Z, Z, true, testi, nil); + biggen(n, Z, Z, yes, testi, nil); break; default: @@ -2643,14 +2643,14 @@ reglcgen(&nod, n, Z); n->type = t; n = &nod; - biggen(n, Z, Z, true, testi, nil); + biggen(n, Z, Z, yes, testi, nil); if(n == &nod) regfree(n); } else { nn = regpair(Z, n); sugen(n, nn, 8); - biggen(nn, Z, Z, true, testi, nil); + biggen(nn, Z, Z, yes, testi, nil); freepair(nn); } } diff -r b51fd2d6c160 src/cmd/8g/Makefile --- a/src/cmd/8g/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8g/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -29,7 +29,7 @@ ../gc/gc.a$O $(TARG): $(OFILES) $(LIB) - $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9 -lm + $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIB) -lbio -l9 $(LIBM) $(OFILES): $(HFILES) diff -r b51fd2d6c160 src/cmd/8g/cgen.c --- a/src/cmd/8g/cgen.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8g/cgen.c Wed Nov 11 19:17:22 2009 +0000 @@ -720,10 +720,10 @@ /* * branch gen - * if(n == true) goto to; + * if(n == yes) goto to; */ void -bgen(Node *n, int true, Prog *to) +bgen(Node *n, int yes, Prog *to) { int et, a; Node *nl, *nr, *r; @@ -763,7 +763,7 @@ nodconst(&n2, n->type, 0); gins(optoas(OCMP, n->type), &n1, &n2); a = AJNE; - if(!true) + if(!yes) a = AJEQ; patch(gbranch(a, n->type), to); regfree(&n1); @@ -771,7 +771,7 @@ case OLITERAL: // need to ask if it is bool? - if(!true == !n->val.u.bval) + if(!yes == !n->val.u.bval) patch(gbranch(AJMP, T), to); return; @@ -781,33 +781,33 @@ nodconst(&n1, n->type, 0); gins(optoas(OCMP, n->type), n, &n1); a = AJNE; - if(!true) + if(!yes) a = AJEQ; patch(gbranch(a, n->type), to); return; case OANDAND: - if(!true) + if(!yes) goto caseor; caseand: p1 = gbranch(AJMP, T); p2 = gbranch(AJMP, T); patch(p1, pc); - bgen(n->left, !true, p2); - bgen(n->right, !true, p2); + bgen(n->left, !yes, p2); + bgen(n->right, !yes, p2); p1 = gbranch(AJMP, T); patch(p1, to); patch(p2, pc); return; case OOROR: - if(!true) + if(!yes) goto caseand; caseor: - bgen(n->left, true, to); - bgen(n->right, true, to); + bgen(n->left, yes, to); + bgen(n->right, yes, to); return; case OEQ: @@ -828,7 +828,7 @@ switch(n->op) { case ONOT: - bgen(nl, !true, to); + bgen(nl, !yes, to); break; case OEQ: @@ -838,7 +838,7 @@ case OLE: case OGE: a = n->op; - if(!true) + if(!yes) a = brcom(a); // make simplest on right diff -r b51fd2d6c160 src/cmd/8g/gg.h --- a/src/cmd/8g/gg.h Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8g/gg.h Wed Nov 11 19:17:22 2009 +0000 @@ -100,7 +100,7 @@ void igen(Node*, Node*, Node*); vlong fieldoffset(Type*, Node*); void bgen(Node*, int, Prog*); -void sgen(Node*, Node*, int32); +void sgen(Node*, Node*, int); void gmove(Node*, Node*); Prog* gins(int, Node*, Node*); int samaddr(Node*, Node*); diff -r b51fd2d6c160 src/cmd/8l/mkenam --- a/src/cmd/8l/mkenam Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/8l/mkenam Wed Nov 11 19:17:22 2009 +0000 @@ -28,18 +28,11 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -ed - ../8l/8.out.h <<'!' -v/^ A/d -,s/^ A/ "/ -g/ .*$/s/// -,s/,*$/",/ -1i +/bin/sed '1a\ char* anames[] = +1a\ { -. -$a +$a\ }; -. -w enam.c -Q -! +/^ A/!d;s/A\([A-Z0-9]*\),*/"\1",/' ../8l/8.out.h > enam.c + diff -r b51fd2d6c160 src/cmd/cov/Makefile --- a/src/cmd/cov/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/cov/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -24,6 +24,7 @@ install: install-$(shell uname | tr A-Z a-z) install-linux: install-default +install-haiku: install-default # on Darwin, have to install and setgid; see $GOROOT/src/sudo.bash install-darwin: $(TARG) diff -r b51fd2d6c160 src/cmd/gc/go.h --- a/src/cmd/gc/go.h Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/gc/go.h Wed Nov 11 19:17:22 2009 +0000 @@ -1158,7 +1158,7 @@ Type* shallow(Type*); Prog* gjmp(Prog*); void patch(Prog*, Prog*); -void bgen(Node *n, int true, Prog *to); +void bgen(Node *n, int yes, Prog *to); void cgen_asop(Node *n); void cgen_call(Node *n, int proc); void cgen_callinter(Node *n, Node *res, int proc); diff -r b51fd2d6c160 src/cmd/gc/walk.c --- a/src/cmd/gc/walk.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/gc/walk.c Wed Nov 11 19:17:22 2009 +0000 @@ -449,6 +449,7 @@ int et; int32 lno; Node *n, *fn; + Node *nvar, *nstar; n = *np; @@ -836,8 +837,6 @@ goto ret; case OADDR:; - Node *nvar, *nstar; - // turn &Point(1, 2) or &[]int(1, 2) or &[...]int(1, 2) into allocation. // initialize with // nvar := new(*Point); diff -r b51fd2d6c160 src/cmd/godefs/Makefile --- a/src/cmd/godefs/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/godefs/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -13,7 +13,7 @@ HFILES=a.h $(TARG): $(OFILES) - $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) -lbio -l9 + $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIBNET) -lbio -l9 clean: rm -f *.$O $(TARG) diff -r b51fd2d6c160 src/cmd/gopack/Makefile --- a/src/cmd/gopack/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/gopack/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -9,7 +9,7 @@ ar.$O\ $(TARG): $(OFILES) - $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) -lmach -lbio -l9 + $(LD) -o $(TARG) -L$(GOROOT)/lib $(OFILES) $(LIBNET) -lmach -lbio -l9 clean: rm -f *.$O $(TARG) diff -r b51fd2d6c160 src/cmd/make.bash --- a/src/cmd/make.bash Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/make.bash Wed Nov 11 19:17:22 2009 +0000 @@ -5,7 +5,7 @@ set -e -bash clean.bash +#bash clean.bash . $GOROOT/src/Make.$GOARCH if [ -z "$O" ]; then diff -r b51fd2d6c160 src/cmd/prof/Makefile --- a/src/cmd/prof/Makefile Tue Nov 10 20:05:24 2009 -0800 +++ b/src/cmd/prof/Makefile Wed Nov 11 19:17:22 2009 +0000 @@ -24,6 +24,7 @@ install: install-$(shell uname | tr A-Z a-z) install-linux: install-default +install-haiku: install-default # on Darwin, have to install and setgid; see $GOROOT/src/sudo.bash install-darwin: $(TARG) diff -r b51fd2d6c160 src/lib9/_p9dir.c --- a/src/lib9/_p9dir.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/lib9/_p9dir.c Wed Nov 11 19:17:22 2009 +0000 @@ -142,7 +142,7 @@ #define _HAVEDISKSIZE #endif -#if !defined(__linux__) && !defined(__sun__) +#if !defined(__linux__) && !defined(__sun__) && !defined(__HAIKU__) #define _HAVESTGEN #endif diff -r b51fd2d6c160 src/lib9/await.c --- a/src/lib9/await.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/lib9/await.c Wed Nov 11 19:17:22 2009 +0000 @@ -38,6 +38,13 @@ #define WCOREDUMP(status) 0 #endif +#define _HAVEWAIT3 1 +#define _HAVEWAIT4 1 +#ifdef __HAIKU__ +#undef _HAVEWAIT3 +#undef _HAVEWAIT4 +#endif + static struct { int sig; char *str; @@ -124,10 +131,14 @@ for(;;){ /* On Linux, pid==-1 means anyone; on SunOS, it's pid==0. */ +#if defined(_HAVEWAIT3) && defined(_HAVEWAIT4) if(pid4 == -1) pid = wait3(&status, opt, &ru); else pid = wait4(pid4, &status, opt, &ru); +#else + pid = waitpid(pid4, status, opt); +#endif if(pid <= 0) { free(w); return nil; diff -r b51fd2d6c160 src/lib9/rfork.c --- a/src/lib9/rfork.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/lib9/rfork.c Wed Nov 11 19:17:22 2009 +0000 @@ -75,8 +75,9 @@ */ close(p[1]); status = 0; - if(wait4(pid, &status, 0, 0) < 0){ - werrstr("pipe dance - wait4 - %r"); +#undef waitpid + if(waitpid(pid, &status, 0) < 0){ + werrstr("pipe dance - waitpid - %r"); close(p[0]); return -1; } diff -r b51fd2d6c160 src/libmach/8db.c --- a/src/libmach/8db.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/libmach/8db.c Wed Nov 11 19:17:22 2009 +0000 @@ -437,28 +437,28 @@ static Optable optab0F00[8]= { -[0x00] 0,0, "MOVW LDT,%e", -[0x01] 0,0, "MOVW TR,%e", -[0x02] 0,0, "MOVW %e,LDT", -[0x03] 0,0, "MOVW %e,TR", -[0x04] 0,0, "VERR %e", -[0x05] 0,0, "VERW %e", +[0x00] {0,0, "MOVW LDT,%e"}, +[0x01] {0,0, "MOVW TR,%e"}, +[0x02] {0,0, "MOVW %e,LDT"}, +[0x03] {0,0, "MOVW %e,TR"}, +[0x04] {0,0, "VERR %e"}, +[0x05] {0,0, "VERW %e"}, }; static Optable optab0F01[8]= { -[0x00] 0,0, "MOVL GDTR,%e", -[0x01] 0,0, "MOVL IDTR,%e", -[0x02] 0,0, "MOVL %e,GDTR", -[0x03] 0,0, "MOVL %e,IDTR", -[0x04] 0,0, "MOVW MSW,%e", /* word */ -[0x06] 0,0, "MOVW %e,MSW", /* word */ -[0x07] 0,0, "INVLPG %e", /* or SWAPGS */ +[0x00] {0,0, "MOVL GDTR,%e"}, +[0x01] {0,0, "MOVL IDTR,%e"}, +[0x02] {0,0, "MOVL %e,GDTR"}, +[0x03] {0,0, "MOVL %e,IDTR"}, +[0x04] {0,0, "MOVW MSW,%e"}, /* word */ +[0x06] {0,0, "MOVW %e,MSW"}, /* word */ +[0x07] {0,0, "INVLPG %e"}, /* or SWAPGS */ }; static Optable optab0F01F8[1]= { -[0x00] 0,0, "SWAPGS", +[0x00] {0,0, "SWAPGS"}, }; /* 0F71 */ @@ -467,13 +467,13 @@ static Optable optab0FAE[8]= { -[0x00] 0,0, "FXSAVE %e", -[0x01] 0,0, "FXRSTOR %e", -[0x02] 0,0, "LDMXCSR %e", -[0x03] 0,0, "STMXCSR %e", -[0x05] 0,0, "LFENCE", -[0x06] 0,0, "MFENCE", -[0x07] 0,0, "SFENCE", +[0x00] {0,0, "FXSAVE %e"}, +[0x01] {0,0, "FXRSTOR %e"}, +[0x02] {0,0, "LDMXCSR %e"}, +[0x03] {0,0, "STMXCSR %e"}, +[0x05] {0,0, "LFENCE"}, +[0x06] {0,0, "MFENCE"}, +[0x07] {0,0, "SFENCE"}, }; /* 0F18 */ @@ -481,455 +481,455 @@ static Optable optab0FBA[8]= { -[0x04] Ib,0, "BT%S %i,%e", -[0x05] Ib,0, "BTS%S %i,%e", -[0x06] Ib,0, "BTR%S %i,%e", -[0x07] Ib,0, "BTC%S %i,%e", +[0x04] {Ib,0, "BT%S %i,%e"}, +[0x05] {Ib,0, "BTS%S %i,%e"}, +[0x06] {Ib,0, "BTR%S %i,%e"}, +[0x07] {Ib,0, "BTC%S %i,%e"}, }; static Optable optab0F0F[256]= { -[0x0c] 0,0, "PI2FW %m,%M", -[0x0d] 0,0, "PI2L %m,%M", -[0x1c] 0,0, "PF2IW %m,%M", -[0x1d] 0,0, "PF2IL %m,%M", -[0x8a] 0,0, "PFNACC %m,%M", -[0x8e] 0,0, "PFPNACC %m,%M", -[0x90] 0,0, "PFCMPGE %m,%M", -[0x94] 0,0, "PFMIN %m,%M", -[0x96] 0,0, "PFRCP %m,%M", -[0x97] 0,0, "PFRSQRT %m,%M", -[0x9a] 0,0, "PFSUB %m,%M", -[0x9e] 0,0, "PFADD %m,%M", -[0xa0] 0,0, "PFCMPGT %m,%M", -[0xa4] 0,0, "PFMAX %m,%M", -[0xa6] 0,0, "PFRCPIT1 %m,%M", -[0xa7] 0,0, "PFRSQIT1 %m,%M", -[0xaa] 0,0, "PFSUBR %m,%M", -[0xae] 0,0, "PFACC %m,%M", -[0xb0] 0,0, "PFCMPEQ %m,%M", -[0xb4] 0,0, "PFMUL %m,%M", -[0xb6] 0,0, "PFRCPI2T %m,%M", -[0xb7] 0,0, "PMULHRW %m,%M", -[0xbb] 0,0, "PSWAPL %m,%M", +[0x0c] {0,0, "PI2FW %m,%M"}, +[0x0d] {0,0, "PI2L %m,%M"}, +[0x1c] {0,0, "PF2IW %m,%M"}, +[0x1d] {0,0, "PF2IL %m,%M"}, +[0x8a] {0,0, "PFNACC %m,%M"}, +[0x8e] {0,0, "PFPNACC %m,%M"}, +[0x90] {0,0, "PFCMPGE %m,%M"}, +[0x94] {0,0, "PFMIN %m,%M"}, +[0x96] {0,0, "PFRCP %m,%M"}, +[0x97] {0,0, "PFRSQRT %m,%M"}, +[0x9a] {0,0, "PFSUB %m,%M"}, +[0x9e] {0,0, "PFADD %m,%M"}, +[0xa0] {0,0, "PFCMPGT %m,%M"}, +[0xa4] {0,0, "PFMAX %m,%M"}, +[0xa6] {0,0, "PFRCPIT1 %m,%M"}, +[0xa7] {0,0, "PFRSQIT1 %m,%M"}, +[0xaa] {0,0, "PFSUBR %m,%M"}, +[0xae] {0,0, "PFACC %m,%M"}, +[0xb0] {0,0, "PFCMPEQ %m,%M"}, +[0xb4] {0,0, "PFMUL %m,%M"}, +[0xb6] {0,0, "PFRCPI2T %m,%M"}, +[0xb7] {0,0, "PMULHRW %m,%M"}, +[0xbb] {0,0, "PSWAPL %m,%M"}, }; static Optable optab0FC7[8]= { -[0x01] 0,0, "CMPXCHG8B %e", +[0x01] {0,0, "CMPXCHG8B %e"}, }; static Optable optab660F71[8]= { -[0x02] Ib,0, "PSRLW %i,%X", -[0x04] Ib,0, "PSRAW %i,%X", -[0x06] Ib,0, "PSLLW %i,%X", +[0x02] {Ib,0, "PSRLW %i,%X"}, +[0x04] {Ib,0, "PSRAW %i,%X"}, +[0x06] {Ib,0, "PSLLW %i,%X"}, }; static Optable optab660F72[8]= { -[0x02] Ib,0, "PSRLL %i,%X", -[0x04] Ib,0, "PSRAL %i,%X", -[0x06] Ib,0, "PSLLL %i,%X", +[0x02] {Ib,0, "PSRLL %i,%X"}, +[0x04] {Ib,0, "PSRAL %i,%X"}, +[0x06] {Ib,0, "PSLLL %i,%X"}, }; static Optable optab660F73[8]= { -[0x02] Ib,0, "PSRLQ %i,%X", -[0x03] Ib,0, "PSRLO %i,%X", -[0x06] Ib,0, "PSLLQ %i,%X", -[0x07] Ib,0, "PSLLO %i,%X", +[0x02] {Ib,0, "PSRLQ %i,%X"}, +[0x03] {Ib,0, "PSRLO %i,%X"}, +[0x06] {Ib,0, "PSLLQ %i,%X"}, +[0x07] {Ib,0, "PSLLO %i,%X"}, }; static Optable optab660F[256]= { -[0x2B] RM,0, "MOVNTPD %x,%e", -[0x2E] RM,0, "UCOMISD %x,%X", -[0x2F] RM,0, "COMISD %x,%X", -[0x5A] RM,0, "CVTPD2PS %x,%X", -[0x5B] RM,0, "CVTPS2PL %x,%X", -[0x6A] RM,0, "PUNPCKHLQ %x,%X", -[0x6B] RM,0, "PACKSSLW %x,%X", -[0x6C] RM,0, "PUNPCKLQDQ %x,%X", -[0x6D] RM,0, "PUNPCKHQDQ %x,%X", -[0x6E] RM,0, "MOV%S %e,%X", -[0x6F] RM,0, "MOVO %x,%X", /* MOVDQA */ -[0x70] RM,Ib, "PSHUFL %i,%x,%X", -[0x71] RMOP,0, optab660F71, -[0x72] RMOP,0, optab660F72, -[0x73] RMOP,0, optab660F73, -[0x7E] RM,0, "MOV%S %X,%e", -[0x7F] RM,0, "MOVO %X,%x", -[0xC4] RM,Ib, "PINSRW %i,%e,%X", -[0xC5] RMR,Ib, "PEXTRW %i,%X,%e", -[0xD4] RM,0, "PADDQ %x,%X", -[0xD5] RM,0, "PMULLW %x,%X", -[0xD6] RM,0, "MOVQ %X,%x", -[0xE6] RM,0, "CVTTPD2PL %x,%X", -[0xE7] RM,0, "MOVNTO %X,%e", -[0xF7] RM,0, "MASKMOVOU %x,%X", +[0x2B] {RM,0, "MOVNTPD %x,%e"}, +[0x2E] {RM,0, "UCOMISD %x,%X"}, +[0x2F] {RM,0, "COMISD %x,%X"}, +[0x5A] {RM,0, "CVTPD2PS %x,%X"}, +[0x5B] {RM,0, "CVTPS2PL %x,%X"}, +[0x6A] {RM,0, "PUNPCKHLQ %x,%X"}, +[0x6B] {RM,0, "PACKSSLW %x,%X"}, +[0x6C] {RM,0, "PUNPCKLQDQ %x,%X"}, +[0x6D] {RM,0, "PUNPCKHQDQ %x,%X"}, +[0x6E] {RM,0, "MOV%S %e,%X"}, +[0x6F] {RM,0, "MOVO %x,%X"}, /* MOVDQA */ +[0x70] {RM,Ib, "PSHUFL %i,%x,%X"}, +[0x71] {RMOP,0, optab660F71}, +[0x72] {RMOP,0, optab660F72}, +[0x73] {RMOP,0, optab660F73}, +[0x7E] {RM,0, "MOV%S %X,%e"}, +[0x7F] {RM,0, "MOVO %X,%x"}, +[0xC4] {RM,Ib, "PINSRW %i,%e,%X"}, +[0xC5] {RMR,Ib, "PEXTRW %i,%X,%e"}, +[0xD4] {RM,0, "PADDQ %x,%X"}, +[0xD5] {RM,0, "PMULLW %x,%X"}, +[0xD6] {RM,0, "MOVQ %X,%x"}, +[0xE6] {RM,0, "CVTTPD2PL %x,%X"}, +[0xE7] {RM,0, "MOVNTO %X,%e"}, +[0xF7] {RM,0, "MASKMOVOU %x,%X"}, }; static Optable optabF20F[256]= { -[0x10] RM,0, "MOVSD %x,%X", -[0x11] RM,0, "MOVSD %X,%x", -[0x2A] RM,0, "CVTS%S2SD %e,%X", -[0x2C] RM,0, "CVTTSD2S%S %x,%r", -[0x2D] RM,0, "CVTSD2S%S %x,%r", -[0x5A] RM,0, "CVTSD2SS %x,%X", -[0x6F] RM,0, "MOVOU %x,%X", -[0x70] RM,Ib, "PSHUFLW %i,%x,%X", -[0x7F] RM,0, "MOVOU %X,%x", -[0xD6] RM,0, "MOVQOZX %M,%X", -[0xE6] RM,0, "CVTPD2PL %x,%X", +[0x10] {RM,0, "MOVSD %x,%X"}, +[0x11] {RM,0, "MOVSD %X,%x"}, +[0x2A] {RM,0, "CVTS%S2SD %e,%X"}, +[0x2C] {RM,0, "CVTTSD2S%S %x,%r"}, +[0x2D] {RM,0, "CVTSD2S%S %x,%r"}, +[0x5A] {RM,0, "CVTSD2SS %x,%X"}, +[0x6F] {RM,0, "MOVOU %x,%X"}, +[0x70] {RM,Ib, "PSHUFLW %i,%x,%X"}, +[0x7F] {RM,0, "MOVOU %X,%x"}, +[0xD6] {RM,0, "MOVQOZX %M,%X"}, +[0xE6] {RM,0, "CVTPD2PL %x,%X"}, }; static Optable optabF30F[256]= { -[0x10] RM,0, "MOVSS %x,%X", -[0x11] RM,0, "MOVSS %X,%x", -[0x2A] RM,0, "CVTS%S2SS %e,%X", -[0x2C] RM,0, "CVTTSS2S%S %x,%r", -[0x2D] RM,0, "CVTSS2S%S %x,%r", -[0x5A] RM,0, "CVTSS2SD %x,%X", -[0x5B] RM,0, "CVTTPS2PL %x,%X", -[0x6F] RM,0, "MOVOU %x,%X", -[0x70] RM,Ib, "PSHUFHW %i,%x,%X", -[0x7E] RM,0, "MOVQOZX %x,%X", -[0x7F] RM,0, "MOVOU %X,%x", -[0xD6] RM,0, "MOVQOZX %m*,%X", -[0xE6] RM,0, "CVTPL2PD %x,%X", +[0x10] {RM,0, "MOVSS %x,%X"}, +[0x11] {RM,0, "MOVSS %X,%x"}, +[0x2A] {RM,0, "CVTS%S2SS %e,%X"}, +[0x2C] {RM,0, "CVTTSS2S%S %x,%r"}, +[0x2D] {RM,0, "CVTSS2S%S %x,%r"}, +[0x5A] {RM,0, "CVTSS2SD %x,%X"}, +[0x5B] {RM,0, "CVTTPS2PL %x,%X"}, +[0x6F] {RM,0, "MOVOU %x,%X"}, +[0x70] {RM,Ib, "PSHUFHW %i,%x,%X"}, +[0x7E] {RM,0, "MOVQOZX %x,%X"}, +[0x7F] {RM,0, "MOVOU %X,%x"}, +[0xD6] {RM,0, "MOVQOZX %m*,%X"}, +[0xE6] {RM,0, "CVTPL2PD %x,%X"}, }; static Optable optab0F[256]= { -[0x00] RMOP,0, optab0F00, -[0x01] RMOP,0, optab0F01, -[0x02] RM,0, "LAR %e,%r", -[0x03] RM,0, "LSL %e,%r", -[0x05] 0,0, "SYSCALL", -[0x06] 0,0, "CLTS", -[0x07] 0,0, "SYSRET", -[0x08] 0,0, "INVD", -[0x09] 0,0, "WBINVD", -[0x0B] 0,0, "UD2", -[0x0F] RM,AUX, optab0F0F, /* 3DNow! */ -[0x10] RM,0, "MOVU%s %x,%X", -[0x11] RM,0, "MOVU%s %X,%x", -[0x12] RM,0, "MOV[H]L%s %x,%X", /* TO DO: H if source is XMM */ -[0x13] RM,0, "MOVL%s %X,%e", -[0x14] RM,0, "UNPCKL%s %x,%X", -[0x15] RM,0, "UNPCKH%s %x,%X", -[0x16] RM,0, "MOV[L]H%s %x,%X", /* TO DO: L if source is XMM */ -[0x17] RM,0, "MOVH%s %X,%x", -[0x20] RMR,0, "MOVL %C,%e", -[0x21] RMR,0, "MOVL %D,%e", -[0x22] RMR,0, "MOVL %e,%C", -[0x23] RMR,0, "MOVL %e,%D", -[0x24] RMR,0, "MOVL %T,%e", -[0x26] RMR,0, "MOVL %e,%T", -[0x28] RM,0, "MOVA%s %x,%X", -[0x29] RM,0, "MOVA%s %X,%x", -[0x2A] RM,0, "CVTPL2%s %m*,%X", -[0x2B] RM,0, "MOVNT%s %X,%e", -[0x2C] RM,0, "CVTT%s2PL %x,%M", -[0x2D] RM,0, "CVT%s2PL %x,%M", -[0x2E] RM,0, "UCOMISS %x,%X", -[0x2F] RM,0, "COMISS %x,%X", -[0x30] 0,0, "WRMSR", -[0x31] 0,0, "RDTSC", -[0x32] 0,0, "RDMSR", -[0x33] 0,0, "RDPMC", -[0x42] RM,0, "CMOVC %e,%r", /* CF */ -[0x43] RM,0, "CMOVNC %e,%r", /* ¬ CF */ -[0x44] RM,0, "CMOVZ %e,%r", /* ZF */ -[0x45] RM,0, "CMOVNZ %e,%r", /* ¬ ZF */ -[0x46] RM,0, "CMOVBE %e,%r", /* CF ∨ ZF */ -[0x47] RM,0, "CMOVA %e,%r", /* ¬CF ∧ ¬ZF */ -[0x48] RM,0, "CMOVS %e,%r", /* SF */ -[0x49] RM,0, "CMOVNS %e,%r", /* ¬ SF */ -[0x4A] RM,0, "CMOVP %e,%r", /* PF */ -[0x4B] RM,0, "CMOVNP %e,%r", /* ¬ PF */ -[0x4C] RM,0, "CMOVLT %e,%r", /* LT ≡ OF ≠ SF */ -[0x4D] RM,0, "CMOVGE %e,%r", /* GE ≡ ZF ∨ SF */ -[0x4E] RM,0, "CMOVLE %e,%r", /* LE ≡ ZF ∨ LT */ -[0x4F] RM,0, "CMOVGT %e,%r", /* GT ≡ ¬ZF ∧ GE */ -[0x50] RM,0, "MOVMSK%s %X,%r", /* TO DO: check */ -[0x51] RM,0, "SQRT%s %x,%X", -[0x52] RM,0, "RSQRT%s %x,%X", -[0x53] RM,0, "RCP%s %x,%X", -[0x54] RM,0, "AND%s %x,%X", -[0x55] RM,0, "ANDN%s %x,%X", -[0x56] RM,0, "OR%s %x,%X", /* TO DO: S/D */ -[0x57] RM,0, "XOR%s %x,%X", /* S/D */ -[0x58] RM,0, "ADD%s %x,%X", /* S/P S/D */ -[0x59] RM,0, "MUL%s %x,%X", -[0x5A] RM,0, "CVTPS2PD %x,%X", -[0x5B] RM,0, "CVTPL2PS %x,%X", -[0x5C] RM,0, "SUB%s %x,%X", -[0x5D] RM,0, "MIN%s %x,%X", -[0x5E] RM,0, "DIV%s %x,%X", /* TO DO: S/P S/D */ -[0x5F] RM,0, "MAX%s %x,%X", -[0x60] RM,0, "PUNPCKLBW %m,%M", -[0x61] RM,0, "PUNPCKLWL %m,%M", -[0x62] RM,0, "PUNPCKLLQ %m,%M", -[0x63] RM,0, "PACKSSWB %m,%M", -[0x64] RM,0, "PCMPGTB %m,%M", -[0x65] RM,0, "PCMPGTW %m,%M", -[0x66] RM,0, "PCMPGTL %m,%M", -[0x67] RM,0, "PACKUSWB %m,%M", -[0x68] RM,0, "PUNPCKHBW %m,%M", -[0x69] RM,0, "PUNPCKHWL %m,%M", -[0x6A] RM,0, "PUNPCKHLQ %m,%M", -[0x6B] RM,0, "PACKSSLW %m,%M", -[0x6E] RM,0, "MOV%S %e,%M", -[0x6F] RM,0, "MOVQ %m,%M", -[0x70] RM,Ib, "PSHUFW %i,%m,%M", -[0x74] RM,0, "PCMPEQB %m,%M", -[0x75] RM,0, "PCMPEQW %m,%M", -[0x76] RM,0, "PCMPEQL %m,%M", -[0x7E] RM,0, "MOV%S %M,%e", -[0x7F] RM,0, "MOVQ %M,%m", -[0xAE] RMOP,0, optab0FAE, -[0xAA] 0,0, "RSM", -[0xB0] RM,0, "CMPXCHGB %r,%e", -[0xB1] RM,0, "CMPXCHG%S %r,%e", -[0xC0] RMB,0, "XADDB %r,%e", -[0xC1] RM,0, "XADD%S %r,%e", -[0xC2] RM,Ib, "CMP%s %i,%x,%X", -[0xC3] RM,0, "MOVNTI%S %r,%e", -[0xC6] RM,Ib, "SHUF%s %i,%x,%X", -[0xC8] 0,0, "BSWAP AX", -[0xC9] 0,0, "BSWAP CX", -[0xCA] 0,0, "BSWAP DX", -[0xCB] 0,0, "BSWAP BX", -[0xCC] 0,0, "BSWAP SP", -[0xCD] 0,0, "BSWAP BP", -[0xCE] 0,0, "BSWAP SI", -[0xCF] 0,0, "BSWAP DI", -[0xD1] RM,0, "PSRLW %m,%M", -[0xD2] RM,0, "PSRLL %m,%M", -[0xD3] RM,0, "PSRLQ %m,%M", -[0xD5] RM,0, "PMULLW %m,%M", -[0xD6] RM,0, "MOVQOZX %m*,%X", -[0xD7] RM,0, "PMOVMSKB %m,%r", -[0xD8] RM,0, "PSUBUSB %m,%M", -[0xD9] RM,0, "PSUBUSW %m,%M", -[0xDA] RM,0, "PMINUB %m,%M", -[0xDB] RM,0, "PAND %m,%M", -[0xDC] RM,0, "PADDUSB %m,%M", -[0xDD] RM,0, "PADDUSW %m,%M", -[0xDE] RM,0, "PMAXUB %m,%M", -[0xDF] RM,0, "PANDN %m,%M", -[0xE0] RM,0, "PAVGB %m,%M", -[0xE1] RM,0, "PSRAW %m,%M", -[0xE2] RM,0, "PSRAL %m,%M", -[0xE3] RM,0, "PAVGW %m,%M", -[0xE4] RM,0, "PMULHUW %m,%M", -[0xE5] RM,0, "PMULHW %m,%M", -[0xE7] RM,0, "MOVNTQ %M,%e", -[0xE8] RM,0, "PSUBSB %m,%M", -[0xE9] RM,0, "PSUBSW %m,%M", -[0xEA] RM,0, "PMINSW %m,%M", -[0xEB] RM,0, "POR %m,%M", -[0xEC] RM,0, "PADDSB %m,%M", -[0xED] RM,0, "PADDSW %m,%M", -[0xEE] RM,0, "PMAXSW %m,%M", -[0xEF] RM,0, "PXOR %m,%M", -[0xF1] RM,0, "PSLLW %m,%M", -[0xF2] RM,0, "PSLLL %m,%M", -[0xF3] RM,0, "PSLLQ %m,%M", -[0xF4] RM,0, "PMULULQ %m,%M", -[0xF5] RM,0, "PMADDWL %m,%M", -[0xF6] RM,0, "PSADBW %m,%M", -[0xF7] RMR,0, "MASKMOVQ %m,%M", -[0xF8] RM,0, "PSUBB %m,%M", -[0xF9] RM,0, "PSUBW %m,%M", -[0xFA] RM,0, "PSUBL %m,%M", -[0xFC] RM,0, "PADDB %m,%M", -[0xFD] RM,0, "PADDW %m,%M", -[0xFE] RM,0, "PADDL %m,%M", +[0x00] {RMOP,0, optab0F00}, +[0x01] {RMOP,0, optab0F01}, +[0x02] {RM,0, "LAR %e,%r"}, +[0x03] {RM,0, "LSL %e,%r"}, +[0x05] {0,0, "SYSCALL"}, +[0x06] {0,0, "CLTS"}, +[0x07] {0,0, "SYSRET"}, +[0x08] {0,0, "INVD"}, +[0x09] {0,0, "WBINVD"}, +[0x0B] {0,0, "UD2"}, +[0x0F] {RM,AUX, optab0F0F}, /* 3DNow! */ +[0x10] {RM,0, "MOVU%s %x,%X"}, +[0x11] {RM,0, "MOVU%s %X,%x"}, +[0x12] {RM,0, "MOV[H]L%s %x,%X"}, /* TO DO: H if source is XMM */ +[0x13] {RM,0, "MOVL%s %X,%e"}, +[0x14] {RM,0, "UNPCKL%s %x,%X"}, +[0x15] {RM,0, "UNPCKH%s %x,%X"}, +[0x16] {RM,0, "MOV[L]H%s %x,%X"}, /* TO DO: L if source is XMM */ +[0x17] {RM,0, "MOVH%s %X,%x"}, +[0x20] {RMR,0, "MOVL %C,%e"}, +[0x21] {RMR,0, "MOVL %D,%e"}, +[0x22] {RMR,0, "MOVL %e,%C"}, +[0x23] {RMR,0, "MOVL %e,%D"}, +[0x24] {RMR,0, "MOVL %T,%e"}, +[0x26] {RMR,0, "MOVL %e,%T"}, +[0x28] {RM,0, "MOVA%s %x,%X"}, +[0x29] {RM,0, "MOVA%s %X,%x"}, +[0x2A] {RM,0, "CVTPL2%s %m*,%X"}, +[0x2B] {RM,0, "MOVNT%s %X,%e"}, +[0x2C] {RM,0, "CVTT%s2PL %x,%M"}, +[0x2D] {RM,0, "CVT%s2PL %x,%M"}, +[0x2E] {RM,0, "UCOMISS %x,%X"}, +[0x2F] {RM,0, "COMISS %x,%X"}, +[0x30] {0,0, "WRMSR"}, +[0x31] {0,0, "RDTSC"}, +[0x32] {0,0, "RDMSR"}, +[0x33] {0,0, "RDPMC"}, +[0x42] {RM,0, "CMOVC %e,%r"}, /* CF */ +[0x43] {RM,0, "CMOVNC %e,%r"}, /* ¬ CF */ +[0x44] {RM,0, "CMOVZ %e,%r"}, /* ZF */ +[0x45] {RM,0, "CMOVNZ %e,%r"}, /* ¬ ZF */ +[0x46] {RM,0, "CMOVBE %e,%r"}, /* CF ∨ ZF */ +[0x47] {RM,0, "CMOVA %e,%r"}, /* ¬CF ∧ ¬ZF */ +[0x48] {RM,0, "CMOVS %e,%r"}, /* SF */ +[0x49] {RM,0, "CMOVNS %e,%r"}, /* ¬ SF */ +[0x4A] {RM,0, "CMOVP %e,%r"}, /* PF */ +[0x4B] {RM,0, "CMOVNP %e,%r"}, /* ¬ PF */ +[0x4C] {RM,0, "CMOVLT %e,%r"}, /* LT ≡ OF ≠ SF */ +[0x4D] {RM,0, "CMOVGE %e,%r"}, /* GE ≡ ZF ∨ SF */ +[0x4E] {RM,0, "CMOVLE %e,%r"}, /* LE ≡ ZF ∨ LT */ +[0x4F] {RM,0, "CMOVGT %e,%r"}, /* GT ≡ ¬ZF ∧ GE */ +[0x50] {RM,0, "MOVMSK%s %X,%r"}, /* TO DO: check */ +[0x51] {RM,0, "SQRT%s %x,%X"}, +[0x52] {RM,0, "RSQRT%s %x,%X"}, +[0x53] {RM,0, "RCP%s %x,%X"}, +[0x54] {RM,0, "AND%s %x,%X"}, +[0x55] {RM,0, "ANDN%s %x,%X"}, +[0x56] {RM,0, "OR%s %x,%X"}, /* TO DO: S/D */ +[0x57] {RM,0, "XOR%s %x,%X"}, /* S/D */ +[0x58] {RM,0, "ADD%s %x,%X"}, /* S/P S/D */ +[0x59] {RM,0, "MUL%s %x,%X"}, +[0x5A] {RM,0, "CVTPS2PD %x,%X"}, +[0x5B] {RM,0, "CVTPL2PS %x,%X"}, +[0x5C] {RM,0, "SUB%s %x,%X"}, +[0x5D] {RM,0, "MIN%s %x,%X"}, +[0x5E] {RM,0, "DIV%s %x,%X"}, /* TO DO: S/P S/D */ +[0x5F] {RM,0, "MAX%s %x,%X"}, +[0x60] {RM,0, "PUNPCKLBW %m,%M"}, +[0x61] {RM,0, "PUNPCKLWL %m,%M"}, +[0x62] {RM,0, "PUNPCKLLQ %m,%M"}, +[0x63] {RM,0, "PACKSSWB %m,%M"}, +[0x64] {RM,0, "PCMPGTB %m,%M"}, +[0x65] {RM,0, "PCMPGTW %m,%M"}, +[0x66] {RM,0, "PCMPGTL %m,%M"}, +[0x67] {RM,0, "PACKUSWB %m,%M"}, +[0x68] {RM,0, "PUNPCKHBW %m,%M"}, +[0x69] {RM,0, "PUNPCKHWL %m,%M"}, +[0x6A] {RM,0, "PUNPCKHLQ %m,%M"}, +[0x6B] {RM,0, "PACKSSLW %m,%M"}, +[0x6E] {RM,0, "MOV%S %e,%M"}, +[0x6F] {RM,0, "MOVQ %m,%M"}, +[0x70] {RM,Ib, "PSHUFW %i,%m,%M"}, +[0x74] {RM,0, "PCMPEQB %m,%M"}, +[0x75] {RM,0, "PCMPEQW %m,%M"}, +[0x76] {RM,0, "PCMPEQL %m,%M"}, +[0x7E] {RM,0, "MOV%S %M,%e"}, +[0x7F] {RM,0, "MOVQ %M,%m"}, +[0xAE] {RMOP,0, optab0FAE}, +[0xAA] {0,0, "RSM"}, +[0xB0] {RM,0, "CMPXCHGB %r,%e"}, +[0xB1] {RM,0, "CMPXCHG%S %r,%e"}, +[0xC0] {RMB,0, "XADDB %r,%e"}, +[0xC1] {RM,0, "XADD%S %r,%e"}, +[0xC2] {RM,Ib, "CMP%s %i,%x,%X"}, +[0xC3] {RM,0, "MOVNTI%S %r,%e"}, +[0xC6] {RM,Ib, "SHUF%s %i,%x,%X"}, +[0xC8] {0,0, "BSWAP AX"}, +[0xC9] {0,0, "BSWAP CX"}, +[0xCA] {0,0, "BSWAP DX"}, +[0xCB] {0,0, "BSWAP BX"}, +[0xCC] {0,0, "BSWAP SP"}, +[0xCD] {0,0, "BSWAP BP"}, +[0xCE] {0,0, "BSWAP SI"}, +[0xCF] {0,0, "BSWAP DI"}, +[0xD1] {RM,0, "PSRLW %m,%M"}, +[0xD2] {RM,0, "PSRLL %m,%M"}, +[0xD3] {RM,0, "PSRLQ %m,%M"}, +[0xD5] {RM,0, "PMULLW %m,%M"}, +[0xD6] {RM,0, "MOVQOZX %m*,%X"}, +[0xD7] {RM,0, "PMOVMSKB %m,%r"}, +[0xD8] {RM,0, "PSUBUSB %m,%M"}, +[0xD9] {RM,0, "PSUBUSW %m,%M"}, +[0xDA] {RM,0, "PMINUB %m,%M"}, +[0xDB] {RM,0, "PAND %m,%M"}, +[0xDC] {RM,0, "PADDUSB %m,%M"}, +[0xDD] {RM,0, "PADDUSW %m,%M"}, +[0xDE] {RM,0, "PMAXUB %m,%M"}, +[0xDF] {RM,0, "PANDN %m,%M"}, +[0xE0] {RM,0, "PAVGB %m,%M"}, +[0xE1] {RM,0, "PSRAW %m,%M"}, +[0xE2] {RM,0, "PSRAL %m,%M"}, +[0xE3] {RM,0, "PAVGW %m,%M"}, +[0xE4] {RM,0, "PMULHUW %m,%M"}, +[0xE5] {RM,0, "PMULHW %m,%M"}, +[0xE7] {RM,0, "MOVNTQ %M,%e"}, +[0xE8] {RM,0, "PSUBSB %m,%M"}, +[0xE9] {RM,0, "PSUBSW %m,%M"}, +[0xEA] {RM,0, "PMINSW %m,%M"}, +[0xEB] {RM,0, "POR %m,%M"}, +[0xEC] {RM,0, "PADDSB %m,%M"}, +[0xED] {RM,0, "PADDSW %m,%M"}, +[0xEE] {RM,0, "PMAXSW %m,%M"}, +[0xEF] {RM,0, "PXOR %m,%M"}, +[0xF1] {RM,0, "PSLLW %m,%M"}, +[0xF2] {RM,0, "PSLLL %m,%M"}, +[0xF3] {RM,0, "PSLLQ %m,%M"}, +[0xF4] {RM,0, "PMULULQ %m,%M"}, +[0xF5] {RM,0, "PMADDWL %m,%M"}, +[0xF6] {RM,0, "PSADBW %m,%M"}, +[0xF7] {RMR,0, "MASKMOVQ %m,%M"}, +[0xF8] {RM,0, "PSUBB %m,%M"}, +[0xF9] {RM,0, "PSUBW %m,%M"}, +[0xFA] {RM,0, "PSUBL %m,%M"}, +[0xFC] {RM,0, "PADDB %m,%M"}, +[0xFD] {RM,0, "PADDW %m,%M"}, +[0xFE] {RM,0, "PADDL %m,%M"}, -[0x80] Iwds,0, "JOS %p", -[0x81] Iwds,0, "JOC %p", -[0x82] Iwds,0, "JCS %p", -[0x83] Iwds,0, "JCC %p", -[0x84] Iwds,0, "JEQ %p", -[0x85] Iwds,0, "JNE %p", -[0x86] Iwds,0, "JLS %p", -[0x87] Iwds,0, "JHI %p", -[0x88] Iwds,0, "JMI %p", -[0x89] Iwds,0, "JPL %p", -[0x8a] Iwds,0, "JPS %p", -[0x8b] Iwds,0, "JPC %p", -[0x8c] Iwds,0, "JLT %p", -[0x8d] Iwds,0, "JGE %p", -[0x8e] Iwds,0, "JLE %p", -[0x8f] Iwds,0, "JGT %p", -[0x90] RMB,0, "SETOS %e", -[0x91] RMB,0, "SETOC %e", -[0x92] RMB,0, "SETCS %e", -[0x93] RMB,0, "SETCC %e", -[0x94] RMB,0, "SETEQ %e", -[0x95] RMB,0, "SETNE %e", -[0x96] RMB,0, "SETLS %e", -[0x97] RMB,0, "SETHI %e", -[0x98] RMB,0, "SETMI %e", -[0x99] RMB,0, "SETPL %e", -[0x9a] RMB,0, "SETPS %e", -[0x9b] RMB,0, "SETPC %e", -[0x9c] RMB,0, "SETLT %e", -[0x9d] RMB,0, "SETGE %e", -[0x9e] RMB,0, "SETLE %e", -[0x9f] RMB,0, "SETGT %e", -[0xa0] 0,0, "PUSHL FS", -[0xa1] 0,0, "POPL FS", -[0xa2] 0,0, "CPUID", -[0xa3] RM,0, "BT%S %r,%e", -[0xa4] RM,Ib, "SHLD%S %r,%i,%e", -[0xa5] RM,0, "SHLD%S %r,CL,%e", -[0xa8] 0,0, "PUSHL GS", -[0xa9] 0,0, "POPL GS", -[0xab] RM,0, "BTS%S %r,%e", -[0xac] RM,Ib, "SHRD%S %r,%i,%e", -[0xad] RM,0, "SHRD%S %r,CL,%e", -[0xaf] RM,0, "IMUL%S %e,%r", -[0xb2] RMM,0, "LSS %e,%r", -[0xb3] RM,0, "BTR%S %r,%e", -[0xb4] RMM,0, "LFS %e,%r", -[0xb5] RMM,0, "LGS %e,%r", -[0xb6] RMB,0, "MOVBZX %e,%R", -[0xb7] RM,0, "MOVWZX %e,%R", -[0xba] RMOP,0, optab0FBA, -[0xbb] RM,0, "BTC%S %e,%r", -[0xbc] RM,0, "BSF%S %e,%r", -[0xbd] RM,0, "BSR%S %e,%r", -[0xbe] RMB,0, "MOVBSX %e,%R", -[0xbf] RM,0, "MOVWSX %e,%R", -[0xc7] RMOP,0, optab0FC7, +[0x80] {Iwds,0, "JOS %p"}, +[0x81] {Iwds,0, "JOC %p"}, +[0x82] {Iwds,0, "JCS %p"}, +[0x83] {Iwds,0, "JCC %p"}, +[0x84] {Iwds,0, "JEQ %p"}, +[0x85] {Iwds,0, "JNE %p"}, +[0x86] {Iwds,0, "JLS %p"}, +[0x87] {Iwds,0, "JHI %p"}, +[0x88] {Iwds,0, "JMI %p"}, +[0x89] {Iwds,0, "JPL %p"}, +[0x8a] {Iwds,0, "JPS %p"}, +[0x8b] {Iwds,0, "JPC %p"}, +[0x8c] {Iwds,0, "JLT %p"}, +[0x8d] {Iwds,0, "JGE %p"}, +[0x8e] {Iwds,0, "JLE %p"}, +[0x8f] {Iwds,0, "JGT %p"}, +[0x90] {RMB,0, "SETOS %e"}, +[0x91] {RMB,0, "SETOC %e"}, +[0x92] {RMB,0, "SETCS %e"}, +[0x93] {RMB,0, "SETCC %e"}, +[0x94] {RMB,0, "SETEQ %e"}, +[0x95] {RMB,0, "SETNE %e"}, +[0x96] {RMB,0, "SETLS %e"}, +[0x97] {RMB,0, "SETHI %e"}, +[0x98] {RMB,0, "SETMI %e"}, +[0x99] {RMB,0, "SETPL %e"}, +[0x9a] {RMB,0, "SETPS %e"}, +[0x9b] {RMB,0, "SETPC %e"}, +[0x9c] {RMB,0, "SETLT %e"}, +[0x9d] {RMB,0, "SETGE %e"}, +[0x9e] {RMB,0, "SETLE %e"}, +[0x9f] {RMB,0, "SETGT %e"}, +[0xa0] {0,0, "PUSHL FS"}, +[0xa1] {0,0, "POPL FS"}, +[0xa2] {0,0, "CPUID"}, +[0xa3] {RM,0, "BT%S %r,%e"}, +[0xa4] {RM,Ib, "SHLD%S %r,%i,%e"}, +[0xa5] {RM,0, "SHLD%S %r,CL,%e"}, +[0xa8] {0,0, "PUSHL GS"}, +[0xa9] {0,0, "POPL GS"}, +[0xab] {RM,0, "BTS%S %r,%e"}, +[0xac] {RM,Ib, "SHRD%S %r,%i,%e"}, +[0xad] {RM,0, "SHRD%S %r,CL,%e"}, +[0xaf] {RM,0, "IMUL%S %e,%r"}, +[0xb2] {RMM,0, "LSS %e,%r"}, +[0xb3] {RM,0, "BTR%S %r,%e"}, +[0xb4] {RMM,0, "LFS %e,%r"}, +[0xb5] {RMM,0, "LGS %e,%r"}, +[0xb6] {RMB,0, "MOVBZX %e,%R"}, +[0xb7] {RM,0, "MOVWZX %e,%R"}, +[0xba] {RMOP,0, optab0FBA}, +[0xbb] {RM,0, "BTC%S %e,%r"}, +[0xbc] {RM,0, "BSF%S %e,%r"}, +[0xbd] {RM,0, "BSR%S %e,%r"}, +[0xbe] {RMB,0, "MOVBSX %e,%R"}, +[0xbf] {RM,0, "MOVWSX %e,%R"}, +[0xc7] {RMOP,0, optab0FC7}, }; static Optable optab80[8]= { -[0x00] Ib,0, "ADDB %i,%e", -[0x01] Ib,0, "ORB %i,%e", -[0x02] Ib,0, "ADCB %i,%e", -[0x03] Ib,0, "SBBB %i,%e", -[0x04] Ib,0, "ANDB %i,%e", -[0x05] Ib,0, "SUBB %i,%e", -[0x06] Ib,0, "XORB %i,%e", -[0x07] Ib,0, "CMPB %e,%i", +[0x00] {Ib,0, "ADDB %i,%e"}, +[0x01] {Ib,0, "ORB %i,%e"}, +[0x02] {Ib,0, "ADCB %i,%e"}, +[0x03] {Ib,0, "SBBB %i,%e"}, +[0x04] {Ib,0, "ANDB %i,%e"}, +[0x05] {Ib,0, "SUBB %i,%e"}, +[0x06] {Ib,0, "XORB %i,%e"}, +[0x07] {Ib,0, "CMPB %e,%i"}, }; static Optable optab81[8]= { -[0x00] Iwd,0, "ADD%S %i,%e", -[0x01] Iwd,0, "OR%S %i,%e", -[0x02] Iwd,0, "ADC%S %i,%e", -[0x03] Iwd,0, "SBB%S %i,%e", -[0x04] Iwd,0, "AND%S %i,%e", -[0x05] Iwd,0, "SUB%S %i,%e", -[0x06] Iwd,0, "XOR%S %i,%e", -[0x07] Iwd,0, "CMP%S %e,%i", +[0x00] {Iwd,0, "ADD%S %i,%e"}, +[0x01] {Iwd,0, "OR%S %i,%e"}, +[0x02] {Iwd,0, "ADC%S %i,%e"}, +[0x03] {Iwd,0, "SBB%S %i,%e"}, +[0x04] {Iwd,0, "AND%S %i,%e"}, +[0x05] {Iwd,0, "SUB%S %i,%e"}, +[0x06] {Iwd,0, "XOR%S %i,%e"}, +[0x07] {Iwd,0, "CMP%S %e,%i"}, }; static Optable optab83[8]= { -[0x00] Ibs,0, "ADD%S %i,%e", -[0x01] Ibs,0, "OR%S %i,%e", -[0x02] Ibs,0, "ADC%S %i,%e", -[0x03] Ibs,0, "SBB%S %i,%e", -[0x04] Ibs,0, "AND%S %i,%e", -[0x05] Ibs,0, "SUB%S %i,%e", -[0x06] Ibs,0, "XOR%S %i,%e", -[0x07] Ibs,0, "CMP%S %e,%i", +[0x00] {Ibs,0, "ADD%S %i,%e"}, +[0x01] {Ibs,0, "OR%S %i,%e"}, +[0x02] {Ibs,0, "ADC%S %i,%e"}, +[0x03] {Ibs,0, "SBB%S %i,%e"}, +[0x04] {Ibs,0, "AND%S %i,%e"}, +[0x05] {Ibs,0, "SUB%S %i,%e"}, +[0x06] {Ibs,0, "XOR%S %i,%e"}, +[0x07] {Ibs,0, "CMP%S %e,%i"}, }; static Optable optabC0[8] = { -[0x00] Ib,0, "ROLB %i,%e", -[0x01] Ib,0, "RORB %i,%e", -[0x02] Ib,0, "RCLB %i,%e", -[0x03] Ib,0, "RCRB %i,%e", -[0x04] Ib,0, "SHLB %i,%e", -[0x05] Ib,0, "SHRB %i,%e", -[0x07] Ib,0, "SARB %i,%e", +[0x00] {Ib,0, "ROLB %i,%e"}, +[0x01] {Ib,0, "RORB %i,%e"}, +[0x02] {Ib,0, "RCLB %i,%e"}, +[0x03] {Ib,0, "RCRB %i,%e"}, +[0x04] {Ib,0, "SHLB %i,%e"}, +[0x05] {Ib,0, "SHRB %i,%e"}, +[0x07] {Ib,0, "SARB %i,%e"}, }; static Optable optabC1[8] = { -[0x00] Ib,0, "ROL%S %i,%e", -[0x01] Ib,0, "ROR%S %i,%e", -[0x02] Ib,0, "RCL%S %i,%e", -[0x03] Ib,0, "RCR%S %i,%e", -[0x04] Ib,0, "SHL%S %i,%e", -[0x05] Ib,0, "SHR%S %i,%e", -[0x07] Ib,0, "SAR%S %i,%e", +[0x00] {Ib,0, "ROL%S %i,%e"}, +[0x01] {Ib,0, "ROR%S %i,%e"}, +[0x02] {Ib,0, "RCL%S %i,%e"}, +[0x03] {Ib,0, "RCR%S %i,%e"}, +[0x04] {Ib,0, "SHL%S %i,%e"}, +[0x05] {Ib,0, "SHR%S %i,%e"}, +[0x07] {Ib,0, "SAR%S %i,%e"}, }; static Optable optabD0[8] = { -[0x00] 0,0, "ROLB %e", -[0x01] 0,0, "RORB %e", -[0x02] 0,0, "RCLB %e", -[0x03] 0,0, "RCRB %e", -[0x04] 0,0, "SHLB %e", -[0x05] 0,0, "SHRB %e", -[0x07] 0,0, "SARB %e", +[0x00] {0,0, "ROLB %e"}, +[0x01] {0,0, "RORB %e"}, +[0x02] {0,0, "RCLB %e"}, +[0x03] {0,0, "RCRB %e"}, +[0x04] {0,0, "SHLB %e"}, +[0x05] {0,0, "SHRB %e"}, +[0x07] {0,0, "SARB %e"}, }; static Optable optabD1[8] = { -[0x00] 0,0, "ROL%S %e", -[0x01] 0,0, "ROR%S %e", -[0x02] 0,0, "RCL%S %e", -[0x03] 0,0, "RCR%S %e", -[0x04] 0,0, "SHL%S %e", -[0x05] 0,0, "SHR%S %e", -[0x07] 0,0, "SAR%S %e", +[0x00] {0,0, "ROL%S %e"}, +[0x01] {0,0, "ROR%S %e"}, +[0x02] {0,0, "RCL%S %e"}, +[0x03] {0,0, "RCR%S %e"}, +[0x04] {0,0, "SHL%S %e"}, +[0x05] {0,0, "SHR%S %e"}, +[0x07] {0,0, "SAR%S %e"}, }; static Optable optabD2[8] = { -[0x00] 0,0, "ROLB CL,%e", -[0x01] 0,0, "RORB CL,%e", -[0x02] 0,0, "RCLB CL,%e", -[0x03] 0,0, "RCRB CL,%e", -[0x04] 0,0, "SHLB CL,%e", -[0x05] 0,0, "SHRB CL,%e", -[0x07] 0,0, "SARB CL,%e", +[0x00] {0,0, "ROLB CL,%e"}, +[0x01] {0,0, "RORB CL,%e"}, +[0x02] {0,0, "RCLB CL,%e"}, +[0x03] {0,0, "RCRB CL,%e"}, +[0x04] {0,0, "SHLB CL,%e"}, +[0x05] {0,0, "SHRB CL,%e"}, +[0x07] {0,0, "SARB CL,%e"}, }; static Optable optabD3[8] = { -[0x00] 0,0, "ROL%S CL,%e", -[0x01] 0,0, "ROR%S CL,%e", -[0x02] 0,0, "RCL%S CL,%e", -[0x03] 0,0, "RCR%S CL,%e", -[0x04] 0,0, "SHL%S CL,%e", -[0x05] 0,0, "SHR%S CL,%e", -[0x07] 0,0, "SAR%S CL,%e", +[0x00] {0,0, "ROL%S CL,%e"}, +[0x01] {0,0, "ROR%S CL,%e"}, +[0x02] {0,0, "RCL%S CL,%e"}, +[0x03] {0,0, "RCR%S CL,%e"}, +[0x04] {0,0, "SHL%S CL,%e"}, +[0x05] {0,0, "SHR%S CL,%e"}, +[0x07] {0,0, "SAR%S CL,%e"}, }; static Optable optabD8[8+8] = { -[0x00] 0,0, "FADDF %e,F0", -[0x01] 0,0, "FMULF %e,F0", -[0x02] 0,0, "FCOMF %e,F0", -[0x03] 0,0, "FCOMFP %e,F0", -[0x04] 0,0, "FSUBF %e,F0", -[0x05] 0,0, "FSUBRF %e,F0", -[0x06] 0,0, "FDIVF %e,F0", -[0x07] 0,0, "FDIVRF %e,F0", -[0x08] 0,0, "FADDD %f,F0", -[0x09] 0,0, "FMULD %f,F0", -[0x0a] 0,0, "FCOMD %f,F0", -[0x0b] 0,0, "FCOMPD %f,F0", -[0x0c] 0,0, "FSUBD %f,F0", -[0x0d] 0,0, "FSUBRD %f,F0", -[0x0e] 0,0, "FDIVD %f,F0", -[0x0f] 0,0, "FDIVRD %f,F0", +[0x00] {0,0, "FADDF %e,F0"}, +[0x01] {0,0, "FMULF %e,F0"}, +[0x02] {0,0, "FCOMF %e,F0"}, +[0x03] {0,0, "FCOMFP %e,F0"}, +[0x04] {0,0, "FSUBF %e,F0"}, +[0x05] {0,0, "FSUBRF %e,F0"}, +[0x06] {0,0, "FDIVF %e,F0"}, +[0x07] {0,0, "FDIVRF %e,F0"}, +[0x08] {0,0, "FADDD %f,F0"}, +[0x09] {0,0, "FMULD %f,F0"}, +[0x0a] {0,0, "FCOMD %f,F0"}, +[0x0b] {0,0, "FCOMPD %f,F0"}, +[0x0c] {0,0, "FSUBD %f,F0"}, +[0x0d] {0,0, "FSUBRD %f,F0"}, +[0x0e] {0,0, "FDIVD %f,F0"}, +[0x0f] {0,0, "FDIVRD %f,F0"}, }; /* * optabD9 and optabDB use the following encoding: @@ -941,442 +941,442 @@ */ static Optable optabD9[64+8] = { -[0x00] 0,0, "FMOVF %e,F0", -[0x02] 0,0, "FMOVF F0,%e", -[0x03] 0,0, "FMOVFP F0,%e", -[0x04] 0,0, "FLDENV%S %e", -[0x05] 0,0, "FLDCW %e", -[0x06] 0,0, "FSTENV%S %e", -[0x07] 0,0, "FSTCW %e", -[0x08] 0,0, "FMOVD F0,F0", /* Mod R/M = 11xx xxxx*/ -[0x09] 0,0, "FMOVD F1,F0", -[0x0a] 0,0, "FMOVD F2,F0", -[0x0b] 0,0, "FMOVD F3,F0", -[0x0c] 0,0, "FMOVD F4,F0", -[0x0d] 0,0, "FMOVD F5,F0", -[0x0e] 0,0, "FMOVD F6,F0", -[0x0f] 0,0, "FMOVD F7,F0", -[0x10] 0,0, "FXCHD F0,F0", -[0x11] 0,0, "FXCHD F1,F0", -[0x12] 0,0, "FXCHD F2,F0", -[0x13] 0,0, "FXCHD F3,F0", -[0x14] 0,0, "FXCHD F4,F0", -[0x15] 0,0, "FXCHD F5,F0", -[0x16] 0,0, "FXCHD F6,F0", -[0x17] 0,0, "FXCHD F7,F0", -[0x18] 0,0, "FNOP", -[0x28] 0,0, "FCHS", -[0x29] 0,0, "FABS", -[0x2c] 0,0, "FTST", -[0x2d] 0,0, "FXAM", -[0x30] 0,0, "FLD1", -[0x31] 0,0, "FLDL2T", -[0x32] 0,0, "FLDL2E", -[0x33] 0,0, "FLDPI", -[0x34] 0,0, "FLDLG2", -[0x35] 0,0, "FLDLN2", -[0x36] 0,0, "FLDZ", -[0x38] 0,0, "F2XM1", -[0x39] 0,0, "FYL2X", -[0x3a] 0,0, "FPTAN", -[0x3b] 0,0, "FPATAN", -[0x3c] 0,0, "FXTRACT", -[0x3d] 0,0, "FPREM1", -[0x3e] 0,0, "FDECSTP", -[0x3f] 0,0, "FNCSTP", -[0x40] 0,0, "FPREM", -[0x41] 0,0, "FYL2XP1", -[0x42] 0,0, "FSQRT", -[0x43] 0,0, "FSINCOS", -[0x44] 0,0, "FRNDINT", -[0x45] 0,0, "FSCALE", -[0x46] 0,0, "FSIN", -[0x47] 0,0, "FCOS", +[0x00] {0,0, "FMOVF %e,F0"}, +[0x02] {0,0, "FMOVF F0,%e"}, +[0x03] {0,0, "FMOVFP F0,%e"}, +[0x04] {0,0, "FLDENV%S %e"}, +[0x05] {0,0, "FLDCW %e"}, +[0x06] {0,0, "FSTENV%S %e"}, +[0x07] {0,0, "FSTCW %e"}, +[0x08] {0,0, "FMOVD F0,F0"}, /* Mod R/M = 11xx xxxx*/ +[0x09] {0,0, "FMOVD F1,F0"}, +[0x0a] {0,0, "FMOVD F2,F0"}, +[0x0b] {0,0, "FMOVD F3,F0"}, +[0x0c] {0,0, "FMOVD F4,F0"}, +[0x0d] {0,0, "FMOVD F5,F0"}, +[0x0e] {0,0, "FMOVD F6,F0"}, +[0x0f] {0,0, "FMOVD F7,F0"}, +[0x10] {0,0, "FXCHD F0,F0"}, +[0x11] {0,0, "FXCHD F1,F0"}, +[0x12] {0,0, "FXCHD F2,F0"}, +[0x13] {0,0, "FXCHD F3,F0"}, +[0x14] {0,0, "FXCHD F4,F0"}, +[0x15] {0,0, "FXCHD F5,F0"}, +[0x16] {0,0, "FXCHD F6,F0"}, +[0x17] {0,0, "FXCHD F7,F0"}, +[0x18] {0,0, "FNOP"}, +[0x28] {0,0, "FCHS"}, +[0x29] {0,0, "FABS"}, +[0x2c] {0,0, "FTST"}, +[0x2d] {0,0, "FXAM"}, +[0x30] {0,0, "FLD1"}, +[0x31] {0,0, "FLDL2T"}, +[0x32] {0,0, "FLDL2E"}, +[0x33] {0,0, "FLDPI"}, +[0x34] {0,0, "FLDLG2"}, +[0x35] {0,0, "FLDLN2"}, +[0x36] {0,0, "FLDZ"}, +[0x38] {0,0, "F2XM1"}, +[0x39] {0,0, "FYL2X"}, +[0x3a] {0,0, "FPTAN"}, +[0x3b] {0,0, "FPATAN"}, +[0x3c] {0,0, "FXTRACT"}, +[0x3d] {0,0, "FPREM1"}, +[0x3e] {0,0, "FDECSTP"}, +[0x3f] {0,0, "FNCSTP"}, +[0x40] {0,0, "FPREM"}, +[0x41] {0,0, "FYL2XP1"}, +[0x42] {0,0, "FSQRT"}, +[0x43] {0,0, "FSINCOS"}, +[0x44] {0,0, "FRNDINT"}, +[0x45] {0,0, "FSCALE"}, +[0x46] {0,0, "FSIN"}, +[0x47] {0,0, "FCOS"}, }; static Optable optabDA[8+8] = { -[0x00] 0,0, "FADDL %e,F0", -[0x01] 0,0, "FMULL %e,F0", -[0x02] 0,0, "FCOML %e,F0", -[0x03] 0,0, "FCOMLP %e,F0", -[0x04] 0,0, "FSUBL %e,F0", -[0x05] 0,0, "FSUBRL %e,F0", -[0x06] 0,0, "FDIVL %e,F0", -[0x07] 0,0, "FDIVRL %e,F0", -[0x0d] R1,0, "FUCOMPP", +[0x00] {0,0, "FADDL %e,F0"}, +[0x01] {0,0, "FMULL %e,F0"}, +[0x02] {0,0, "FCOML %e,F0"}, +[0x03] {0,0, "FCOMLP %e,F0"}, +[0x04] {0,0, "FSUBL %e,F0"}, +[0x05] {0,0, "FSUBRL %e,F0"}, +[0x06] {0,0, "FDIVL %e,F0"}, +[0x07] {0,0, "FDIVRL %e,F0"}, +[0x0d] {R1,0, "FUCOMPP"}, }; static Optable optabDB[8+64] = { -[0x00] 0,0, "FMOVL %e,F0", -[0x02] 0,0, "FMOVL F0,%e", -[0x03] 0,0, "FMOVLP F0,%e", -[0x05] 0,0, "FMOVX %e,F0", -[0x07] 0,0, "FMOVXP F0,%e", -[0x2a] 0,0, "FCLEX", -[0x2b] 0,0, "FINIT", +[0x00] {0,0, "FMOVL %e,F0"}, +[0x02] {0,0, "FMOVL F0,%e"}, +[0x03] {0,0, "FMOVLP F0,%e"}, +[0x05] {0,0, "FMOVX %e,F0"}, +[0x07] {0,0, "FMOVXP F0,%e"}, +[0x2a] {0,0, "FCLEX"}, +[0x2b] {0,0, "FINIT"}, }; static Optable optabDC[8+8] = { -[0x00] 0,0, "FADDD %e,F0", -[0x01] 0,0, "FMULD %e,F0", -[0x02] 0,0, "FCOMD %e,F0", -[0x03] 0,0, "FCOMDP %e,F0", -[0x04] 0,0, "FSUBD %e,F0", -[0x05] 0,0, "FSUBRD %e,F0", -[0x06] 0,0, "FDIVD %e,F0", -[0x07] 0,0, "FDIVRD %e,F0", -[0x08] 0,0, "FADDD F0,%f", -[0x09] 0,0, "FMULD F0,%f", -[0x0c] 0,0, "FSUBRD F0,%f", -[0x0d] 0,0, "FSUBD F0,%f", -[0x0e] 0,0, "FDIVRD F0,%f", -[0x0f] 0,0, "FDIVD F0,%f", +[0x00] {0,0, "FADDD %e,F0"}, +[0x01] {0,0, "FMULD %e,F0"}, +[0x02] {0,0, "FCOMD %e,F0"}, +[0x03] {0,0, "FCOMDP %e,F0"}, +[0x04] {0,0, "FSUBD %e,F0"}, +[0x05] {0,0, "FSUBRD %e,F0"}, +[0x06] {0,0, "FDIVD %e,F0"}, +[0x07] {0,0, "FDIVRD %e,F0"}, +[0x08] {0,0, "FADDD F0,%f"}, +[0x09] {0,0, "FMULD F0,%f"}, +[0x0c] {0,0, "FSUBRD F0,%f"}, +[0x0d] {0,0, "FSUBD F0,%f"}, +[0x0e] {0,0, "FDIVRD F0,%f"}, +[0x0f] {0,0, "FDIVD F0,%f"}, }; static Optable optabDD[8+8] = { -[0x00] 0,0, "FMOVD %e,F0", -[0x02] 0,0, "FMOVD F0,%e", -[0x03] 0,0, "FMOVDP F0,%e", -[0x04] 0,0, "FRSTOR%S %e", -[0x06] 0,0, "FSAVE%S %e", -[0x07] 0,0, "FSTSW %e", -[0x08] 0,0, "FFREED %f", -[0x0a] 0,0, "FMOVD %f,F0", -[0x0b] 0,0, "FMOVDP %f,F0", -[0x0c] 0,0, "FUCOMD %f,F0", -[0x0d] 0,0, "FUCOMDP %f,F0", +[0x00] {0,0, "FMOVD %e,F0"}, +[0x02] {0,0, "FMOVD F0,%e"}, +[0x03] {0,0, "FMOVDP F0,%e"}, +[0x04] {0,0, "FRSTOR%S %e"}, +[0x06] {0,0, "FSAVE%S %e"}, +[0x07] {0,0, "FSTSW %e"}, +[0x08] {0,0, "FFREED %f"}, +[0x0a] {0,0, "FMOVD %f,F0"}, +[0x0b] {0,0, "FMOVDP %f,F0"}, +[0x0c] {0,0, "FUCOMD %f,F0"}, +[0x0d] {0,0, "FUCOMDP %f,F0"}, }; static Optable optabDE[8+8] = { -[0x00] 0,0, "FADDW %e,F0", -[0x01] 0,0, "FMULW %e,F0", -[0x02] 0,0, "FCOMW %e,F0", -[0x03] 0,0, "FCOMWP %e,F0", -[0x04] 0,0, "FSUBW %e,F0", -[0x05] 0,0, "FSUBRW %e,F0", -[0x06] 0,0, "FDIVW %e,F0", -[0x07] 0,0, "FDIVRW %e,F0", -[0x08] 0,0, "FADDDP F0,%f", -[0x09] 0,0, "FMULDP F0,%f", -[0x0b] R1,0, "FCOMPDP", -[0x0c] 0,0, "FSUBRDP F0,%f", -[0x0d] 0,0, "FSUBDP F0,%f", -[0x0e] 0,0, "FDIVRDP F0,%f", -[0x0f] 0,0, "FDIVDP F0,%f", +[0x00] {0,0, "FADDW %e,F0"}, +[0x01] {0,0, "FMULW %e,F0"}, +[0x02] {0,0, "FCOMW %e,F0"}, +[0x03] {0,0, "FCOMWP %e,F0"}, +[0x04] {0,0, "FSUBW %e,F0"}, +[0x05] {0,0, "FSUBRW %e,F0"}, +[0x06] {0,0, "FDIVW %e,F0"}, +[0x07] {0,0, "FDIVRW %e,F0"}, +[0x08] {0,0, "FADDDP F0,%f"}, +[0x09] {0,0, "FMULDP F0,%f"}, +[0x0b] {R1,0, "FCOMPDP"}, +[0x0c] {0,0, "FSUBRDP F0,%f"}, +[0x0d] {0,0, "FSUBDP F0,%f"}, +[0x0e] {0,0, "FDIVRDP F0,%f"}, +[0x0f] {0,0, "FDIVDP F0,%f"}, }; static Optable optabDF[8+8] = { -[0x00] 0,0, "FMOVW %e,F0", -[0x02] 0,0, "FMOVW F0,%e", -[0x03] 0,0, "FMOVWP F0,%e", -[0x04] 0,0, "FBLD %e", -[0x05] 0,0, "FMOVL %e,F0", -[0x06] 0,0, "FBSTP %e", -[0x07] 0,0, "FMOVLP F0,%e", -[0x0c] R0,0, "FSTSW %OAX", +[0x00] {0,0, "FMOVW %e,F0"}, +[0x02] {0,0, "FMOVW F0,%e"}, +[0x03] {0,0, "FMOVWP F0,%e"}, +[0x04] {0,0, "FBLD %e"}, +[0x05] {0,0, "FMOVL %e,F0"}, +[0x06] {0,0, "FBSTP %e"}, +[0x07] {0,0, "FMOVLP F0,%e"}, +[0x0c] {R0,0, "FSTSW %OAX"}, }; static Optable optabF6[8] = { -[0x00] Ib,0, "TESTB %i,%e", -[0x02] 0,0, "NOTB %e", -[0x03] 0,0, "NEGB %e", -[0x04] 0,0, "MULB AL,%e", -[0x05] 0,0, "IMULB AL,%e", -[0x06] 0,0, "DIVB AL,%e", -[0x07] 0,0, "IDIVB AL,%e", +[0x00] {Ib,0, "TESTB %i,%e"}, +[0x02] {0,0, "NOTB %e"}, +[0x03] {0,0, "NEGB %e"}, +[0x04] {0,0, "MULB AL,%e"}, +[0x05] {0,0, "IMULB AL,%e"}, +[0x06] {0,0, "DIVB AL,%e"}, +[0x07] {0,0, "IDIVB AL,%e"}, }; static Optable optabF7[8] = { -[0x00] Iwd,0, "TEST%S %i,%e", -[0x02] 0,0, "NOT%S %e", -[0x03] 0,0, "NEG%S %e", -[0x04] 0,0, "MUL%S %OAX,%e", -[0x05] 0,0, "IMUL%S %OAX,%e", -[0x06] 0,0, "DIV%S %OAX,%e", -[0x07] 0,0, "IDIV%S %OAX,%e", +[0x00] {Iwd,0, "TEST%S %i,%e"}, +[0x02] {0,0, "NOT%S %e"}, +[0x03] {0,0, "NEG%S %e"}, +[0x04] {0,0, "MUL%S %OAX,%e"}, +[0x05] {0,0, "IMUL%S %OAX,%e"}, +[0x06] {0,0, "DIV%S %OAX,%e"}, +[0x07] {0,0, "IDIV%S %OAX,%e"}, }; static Optable optabFE[8] = { -[0x00] 0,0, "INCB %e", -[0x01] 0,0, "DECB %e", +[0x00] {0,0, "INCB %e"}, +[0x01] {0,0, "DECB %e"}, }; static Optable optabFF[8] = { -[0x00] 0,0, "INC%S %e", -[0x01] 0,0, "DEC%S %e", -[0x02] JUMP,0, "CALL* %e", -[0x03] JUMP,0, "CALLF* %e", -[0x04] JUMP,0, "JMP* %e", -[0x05] JUMP,0, "JMPF* %e", -[0x06] 0,0, "PUSHL %e", +[0x00] {0,0, "INC%S %e"}, +[0x01] {0,0, "DEC%S %e"}, +[0x02] {JUMP,0, "CALL* %e"}, +[0x03] {JUMP,0, "CALLF* %e"}, +[0x04] {JUMP,0, "JMP* %e"}, +[0x05] {JUMP,0, "JMPF* %e"}, +[0x06] {0,0, "PUSHL %e"}, }; static Optable optable[256+1] = { -[0x00] RMB,0, "ADDB %r,%e", -[0x01] RM,0, "ADD%S %r,%e", -[0x02] RMB,0, "ADDB %e,%r", -[0x03] RM,0, "ADD%S %e,%r", -[0x04] Ib,0, "ADDB %i,AL", -[0x05] Iwd,0, "ADD%S %i,%OAX", -[0x06] 0,0, "PUSHL ES", -[0x07] 0,0, "POPL ES", -[0x08] RMB,0, "ORB %r,%e", -[0x09] RM,0, "OR%S %r,%e", -[0x0a] RMB,0, "ORB %e,%r", -[0x0b] RM,0, "OR%S %e,%r", -[0x0c] Ib,0, "ORB %i,AL", -[0x0d] Iwd,0, "OR%S %i,%OAX", -[0x0e] 0,0, "PUSHL CS", -[0x0f] AUXMM,0, optab0F, -[0x10] RMB,0, "ADCB %r,%e", -[0x11] RM,0, "ADC%S %r,%e", -[0x12] RMB,0, "ADCB %e,%r", -[0x13] RM,0, "ADC%S %e,%r", -[0x14] Ib,0, "ADCB %i,AL", -[0x15] Iwd,0, "ADC%S %i,%OAX", -[0x16] 0,0, "PUSHL SS", -[0x17] 0,0, "POPL SS", -[0x18] RMB,0, "SBBB %r,%e", -[0x19] RM,0, "SBB%S %r,%e", -[0x1a] RMB,0, "SBBB %e,%r", -[0x1b] RM,0, "SBB%S %e,%r", -[0x1c] Ib,0, "SBBB %i,AL", -[0x1d] Iwd,0, "SBB%S %i,%OAX", -[0x1e] 0,0, "PUSHL DS", -[0x1f] 0,0, "POPL DS", -[0x20] RMB,0, "ANDB %r,%e", -[0x21] RM,0, "AND%S %r,%e", -[0x22] RMB,0, "ANDB %e,%r", -[0x23] RM,0, "AND%S %e,%r", -[0x24] Ib,0, "ANDB %i,AL", -[0x25] Iwd,0, "AND%S %i,%OAX", -[0x26] SEG,0, "ES:", -[0x27] 0,0, "DAA", -[0x28] RMB,0, "SUBB %r,%e", -[0x29] RM,0, "SUB%S %r,%e", -[0x2a] RMB,0, "SUBB %e,%r", -[0x2b] RM,0, "SUB%S %e,%r", -[0x2c] Ib,0, "SUBB %i,AL", -[0x2d] Iwd,0, "SUB%S %i,%OAX", -[0x2e] SEG,0, "CS:", -[0x2f] 0,0, "DAS", -[0x30] RMB,0, "XORB %r,%e", -[0x31] RM,0, "XOR%S %r,%e", -[0x32] RMB,0, "XORB %e,%r", -[0x33] RM,0, "XOR%S %e,%r", -[0x34] Ib,0, "XORB %i,AL", -[0x35] Iwd,0, "XOR%S %i,%OAX", -[0x36] SEG,0, "SS:", -[0x37] 0,0, "AAA", -[0x38] RMB,0, "CMPB %r,%e", -[0x39] RM,0, "CMP%S %r,%e", -[0x3a] RMB,0, "CMPB %e,%r", -[0x3b] RM,0, "CMP%S %e,%r", -[0x3c] Ib,0, "CMPB %i,AL", -[0x3d] Iwd,0, "CMP%S %i,%OAX", -[0x3e] SEG,0, "DS:", -[0x3f] 0,0, "AAS", -[0x40] 0,0, "INC%S %OAX", -[0x41] 0,0, "INC%S %OCX", -[0x42] 0,0, "INC%S %ODX", -[0x43] 0,0, "INC%S %OBX", -[0x44] 0,0, "INC%S %OSP", -[0x45] 0,0, "INC%S %OBP", -[0x46] 0,0, "INC%S %OSI", -[0x47] 0,0, "INC%S %ODI", -[0x48] 0,0, "DEC%S %OAX", -[0x49] 0,0, "DEC%S %OCX", -[0x4a] 0,0, "DEC%S %ODX", -[0x4b] 0,0, "DEC%S %OBX", -[0x4c] 0,0, "DEC%S %OSP", -[0x4d] 0,0, "DEC%S %OBP", -[0x4e] 0,0, "DEC%S %OSI", -[0x4f] 0,0, "DEC%S %ODI", -[0x50] 0,0, "PUSH%S %OAX", -[0x51] 0,0, "PUSH%S %OCX", -[0x52] 0,0, "PUSH%S %ODX", -[0x53] 0,0, "PUSH%S %OBX", -[0x54] 0,0, "PUSH%S %OSP", -[0x55] 0,0, "PUSH%S %OBP", -[0x56] 0,0, "PUSH%S %OSI", -[0x57] 0,0, "PUSH%S %ODI", -[0x58] 0,0, "POP%S %OAX", -[0x59] 0,0, "POP%S %OCX", -[0x5a] 0,0, "POP%S %ODX", -[0x5b] 0,0, "POP%S %OBX", -[0x5c] 0,0, "POP%S %OSP", -[0x5d] 0,0, "POP%S %OBP", -[0x5e] 0,0, "POP%S %OSI", -[0x5f] 0,0, "POP%S %ODI", -[0x60] 0,0, "PUSHA%S", -[0x61] 0,0, "POPA%S", -[0x62] RMM,0, "BOUND %e,%r", -[0x63] RM,0, "ARPL %r,%e", -[0x64] SEG,0, "FS:", -[0x65] SEG,0, "GS:", -[0x66] OPOVER,0, "", -[0x67] ADDOVER,0, "", -[0x68] Iwd,0, "PUSH%S %i", -[0x69] RM,Iwd, "IMUL%S %e,%i,%r", -[0x6a] Ib,0, "PUSH%S %i", -[0x6b] RM,Ibs, "IMUL%S %e,%i,%r", -[0x6c] 0,0, "INSB DX,(%ODI)", -[0x6d] 0,0, "INS%S DX,(%ODI)", -[0x6e] 0,0, "OUTSB (%ASI),DX", -[0x6f] 0,0, "OUTS%S (%ASI),DX", -[0x70] Jbs,0, "JOS %p", -[0x71] Jbs,0, "JOC %p", -[0x72] Jbs,0, "JCS %p", -[0x73] Jbs,0, "JCC %p", -[0x74] Jbs,0, "JEQ %p", -[0x75] Jbs,0, "JNE %p", -[0x76] Jbs,0, "JLS %p", -[0x77] Jbs,0, "JHI %p", -[0x78] Jbs,0, "JMI %p", -[0x79] Jbs,0, "JPL %p", -[0x7a] Jbs,0, "JPS %p", -[0x7b] Jbs,0, "JPC %p", -[0x7c] Jbs,0, "JLT %p", -[0x7d] Jbs,0, "JGE %p", -[0x7e] Jbs,0, "JLE %p", -[0x7f] Jbs,0, "JGT %p", -[0x80] RMOPB,0, optab80, -[0x81] RMOP,0, optab81, -[0x83] RMOP,0, optab83, -[0x84] RMB,0, "TESTB %r,%e", -[0x85] RM,0, "TEST%S %r,%e", -[0x86] RMB,0, "XCHGB %r,%e", -[0x87] RM,0, "XCHG%S %r,%e", -[0x88] RMB,0, "MOVB %r,%e", -[0x89] RM,0, "MOV%S %r,%e", -[0x8a] RMB,0, "MOVB %e,%r", -[0x8b] RM,0, "MOV%S %e,%r", -[0x8c] RM,0, "MOVW %g,%e", -[0x8d] RM,0, "LEA%S %e,%r", -[0x8e] RM,0, "MOVW %e,%g", -[0x8f] RM,0, "POP%S %e", -[0x90] 0,0, "NOP", -[0x91] 0,0, "XCHG %OCX,%OAX", -[0x92] 0,0, "XCHG %ODX,%OAX", -[0x93] 0,0, "XCHG %OBX,%OAX", -[0x94] 0,0, "XCHG %OSP,%OAX", -[0x95] 0,0, "XCHG %OBP,%OAX", -[0x96] 0,0, "XCHG %OSI,%OAX", -[0x97] 0,0, "XCHG %ODI,%OAX", -[0x98] 0,0, "%W", /* miserable CBW or CWDE */ -[0x99] 0,0, "%w", /* idiotic CWD or CDQ */ -[0x9a] PTR,0, "CALL%S %d", -[0x9b] 0,0, "WAIT", -[0x9c] 0,0, "PUSHF", -[0x9d] 0,0, "POPF", -[0x9e] 0,0, "SAHF", -[0x9f] 0,0, "LAHF", -[0xa0] Awd,0, "MOVB %i,AL", -[0xa1] Awd,0, "MOV%S %i,%OAX", -[0xa2] Awd,0, "MOVB AL,%i", -[0xa3] Awd,0, "MOV%S %OAX,%i", -[0xa4] 0,0, "MOVSB (%ASI),(%ADI)", -[0xa5] 0,0, "MOVS%S (%ASI),(%ADI)", -[0xa6] 0,0, "CMPSB (%ASI),(%ADI)", -[0xa7] 0,0, "CMPS%S (%ASI),(%ADI)", -[0xa8] Ib,0, "TESTB %i,AL", -[0xa9] Iwd,0, "TEST%S %i,%OAX", -[0xaa] 0,0, "STOSB AL,(%ADI)", -[0xab] 0,0, "STOS%S %OAX,(%ADI)", -[0xac] 0,0, "LODSB (%ASI),AL", -[0xad] 0,0, "LODS%S (%ASI),%OAX", -[0xae] 0,0, "SCASB (%ADI),AL", -[0xaf] 0,0, "SCAS%S (%ADI),%OAX", -[0xb0] Ib,0, "MOVB %i,AL", -[0xb1] Ib,0, "MOVB %i,CL", -[0xb2] Ib,0, "MOVB %i,DL", -[0xb3] Ib,0, "MOVB %i,BL", -[0xb4] Ib,0, "MOVB %i,AH", -[0xb5] Ib,0, "MOVB %i,CH", -[0xb6] Ib,0, "MOVB %i,DH", -[0xb7] Ib,0, "MOVB %i,BH", -[0xb8] Iwdq,0, "MOV%S %i,%OAX", -[0xb9] Iwdq,0, "MOV%S %i,%OCX", -[0xba] Iwdq,0, "MOV%S %i,%ODX", -[0xbb] Iwdq,0, "MOV%S %i,%OBX", -[0xbc] Iwdq,0, "MOV%S %i,%OSP", -[0xbd] Iwdq,0, "MOV%S %i,%OBP", -[0xbe] Iwdq,0, "MOV%S %i,%OSI", -[0xbf] Iwdq,0, "MOV%S %i,%ODI", -[0xc0] RMOPB,0, optabC0, -[0xc1] RMOP,0, optabC1, -[0xc2] Iw,0, "RET %i", -[0xc3] RET,0, "RET", -[0xc4] RM,0, "LES %e,%r", -[0xc5] RM,0, "LDS %e,%r", -[0xc6] RMB,Ib, "MOVB %i,%e", -[0xc7] RM,Iwd, "MOV%S %i,%e", -[0xc8] Iw2,Ib, "ENTER %i,%I", /* loony ENTER */ -[0xc9] RET,0, "LEAVE", /* bizarre LEAVE */ -[0xca] Iw,0, "RETF %i", -[0xcb] RET,0, "RETF", -[0xcc] 0,0, "INT 3", -[0xcd] Ib,0, "INTB %i", -[0xce] 0,0, "INTO", -[0xcf] 0,0, "IRET", -[0xd0] RMOPB,0, optabD0, -[0xd1] RMOP,0, optabD1, -[0xd2] RMOPB,0, optabD2, -[0xd3] RMOP,0, optabD3, -[0xd4] OA,0, "AAM", -[0xd5] OA,0, "AAD", -[0xd7] 0,0, "XLAT", -[0xd8] FRMOP,0, optabD8, -[0xd9] FRMEX,0, optabD9, -[0xda] FRMOP,0, optabDA, -[0xdb] FRMEX,0, optabDB, -[0xdc] FRMOP,0, optabDC, -[0xdd] FRMOP,0, optabDD, -[0xde] FRMOP,0, optabDE, -[0xdf] FRMOP,0, optabDF, -[0xe0] Jbs,0, "LOOPNE %p", -[0xe1] Jbs,0, "LOOPE %p", -[0xe2] Jbs,0, "LOOP %p", -[0xe3] Jbs,0, "JCXZ %p", -[0xe4] Ib,0, "INB %i,AL", -[0xe5] Ib,0, "IN%S %i,%OAX", -[0xe6] Ib,0, "OUTB AL,%i", -[0xe7] Ib,0, "OUT%S %OAX,%i", -[0xe8] Iwds,0, "CALL %p", -[0xe9] Iwds,0, "JMP %p", -[0xea] PTR,0, "JMP %d", -[0xeb] Jbs,0, "JMP %p", -[0xec] 0,0, "INB DX,AL", -[0xed] 0,0, "IN%S DX,%OAX", -[0xee] 0,0, "OUTB AL,DX", -[0xef] 0,0, "OUT%S %OAX,DX", -[0xf0] PRE,0, "LOCK", -[0xf2] OPRE,0, "REPNE", -[0xf3] OPRE,0, "REP", -[0xf4] 0,0, "HLT", -[0xf5] 0,0, "CMC", -[0xf6] RMOPB,0, optabF6, -[0xf7] RMOP,0, optabF7, -[0xf8] 0,0, "CLC", -[0xf9] 0,0, "STC", -[0xfa] 0,0, "CLI", -[0xfb] 0,0, "STI", -[0xfc] 0,0, "CLD", -[0xfd] 0,0, "STD", -[0xfe] RMOPB,0, optabFE, -[0xff] RMOP,0, optabFF, -[0x100] RM,0, "MOVLQSX %r,%e", +[0x00] {RMB,0, "ADDB %r,%e"}, +[0x01] {RM,0, "ADD%S %r,%e"}, +[0x02] {RMB,0, "ADDB %e,%r"}, +[0x03] {RM,0, "ADD%S %e,%r"}, +[0x04] {Ib,0, "ADDB %i,AL"}, +[0x05] {Iwd,0, "ADD%S %i,%OAX"}, +[0x06] {0,0, "PUSHL ES"}, +[0x07] {0,0, "POPL ES"}, +[0x08] {RMB,0, "ORB %r,%e"}, +[0x09] {RM,0, "OR%S %r,%e"}, +[0x0a] {RMB,0, "ORB %e,%r"}, +[0x0b] {RM,0, "OR%S %e,%r"}, +[0x0c] {Ib,0, "ORB %i,AL"}, +[0x0d] {Iwd,0, "OR%S %i,%OAX"}, +[0x0e] {0,0, "PUSHL CS"}, +[0x0f] {AUXMM,0, optab0F}, +[0x10] {RMB,0, "ADCB %r,%e"}, +[0x11] {RM,0, "ADC%S %r,%e"}, +[0x12] {RMB,0, "ADCB %e,%r"}, +[0x13] {RM,0, "ADC%S %e,%r"}, +[0x14] {Ib,0, "ADCB %i,AL"}, +[0x15] {Iwd,0, "ADC%S %i,%OAX"}, +[0x16] {0,0, "PUSHL SS"}, +[0x17] {0,0, "POPL SS"}, +[0x18] {RMB,0, "SBBB %r,%e"}, +[0x19] {RM,0, "SBB%S %r,%e"}, +[0x1a] {RMB,0, "SBBB %e,%r"}, +[0x1b] {RM,0, "SBB%S %e,%r"}, +[0x1c] {Ib,0, "SBBB %i,AL"}, +[0x1d] {Iwd,0, "SBB%S %i,%OAX"}, +[0x1e] {0,0, "PUSHL DS"}, +[0x1f] {0,0, "POPL DS"}, +[0x20] {RMB,0, "ANDB %r,%e"}, +[0x21] {RM,0, "AND%S %r,%e"}, +[0x22] {RMB,0, "ANDB %e,%r"}, +[0x23] {RM,0, "AND%S %e,%r"}, +[0x24] {Ib,0, "ANDB %i,AL"}, +[0x25] {Iwd,0, "AND%S %i,%OAX"}, +[0x26] {SEG,0, "ES:"}, +[0x27] {0,0, "DAA"}, +[0x28] {RMB,0, "SUBB %r,%e"}, +[0x29] {RM,0, "SUB%S %r,%e"}, +[0x2a] {RMB,0, "SUBB %e,%r"}, +[0x2b] {RM,0, "SUB%S %e,%r"}, +[0x2c] {Ib,0, "SUBB %i,AL"}, +[0x2d] {Iwd,0, "SUB%S %i,%OAX"}, +[0x2e] {SEG,0, "CS:"}, +[0x2f] {0,0, "DAS"}, +[0x30] {RMB,0, "XORB %r,%e"}, +[0x31] {RM,0, "XOR%S %r,%e"}, +[0x32] {RMB,0, "XORB %e,%r"}, +[0x33] {RM,0, "XOR%S %e,%r"}, +[0x34] {Ib,0, "XORB %i,AL"}, +[0x35] {Iwd,0, "XOR%S %i,%OAX"}, +[0x36] {SEG,0, "SS:"}, +[0x37] {0,0, "AAA"}, +[0x38] {RMB,0, "CMPB %r,%e"}, +[0x39] {RM,0, "CMP%S %r,%e"}, +[0x3a] {RMB,0, "CMPB %e,%r"}, +[0x3b] {RM,0, "CMP%S %e,%r"}, +[0x3c] {Ib,0, "CMPB %i,AL"}, +[0x3d] {Iwd,0, "CMP%S %i,%OAX"}, +[0x3e] {SEG,0, "DS:"}, +[0x3f] {0,0, "AAS"}, +[0x40] {0,0, "INC%S %OAX"}, +[0x41] {0,0, "INC%S %OCX"}, +[0x42] {0,0, "INC%S %ODX"}, +[0x43] {0,0, "INC%S %OBX"}, +[0x44] {0,0, "INC%S %OSP"}, +[0x45] {0,0, "INC%S %OBP"}, +[0x46] {0,0, "INC%S %OSI"}, +[0x47] {0,0, "INC%S %ODI"}, +[0x48] {0,0, "DEC%S %OAX"}, +[0x49] {0,0, "DEC%S %OCX"}, +[0x4a] {0,0, "DEC%S %ODX"}, +[0x4b] {0,0, "DEC%S %OBX"}, +[0x4c] {0,0, "DEC%S %OSP"}, +[0x4d] {0,0, "DEC%S %OBP"}, +[0x4e] {0,0, "DEC%S %OSI"}, +[0x4f] {0,0, "DEC%S %ODI"}, +[0x50] {0,0, "PUSH%S %OAX"}, +[0x51] {0,0, "PUSH%S %OCX"}, +[0x52] {0,0, "PUSH%S %ODX"}, +[0x53] {0,0, "PUSH%S %OBX"}, +[0x54] {0,0, "PUSH%S %OSP"}, +[0x55] {0,0, "PUSH%S %OBP"}, +[0x56] {0,0, "PUSH%S %OSI"}, +[0x57] {0,0, "PUSH%S %ODI"}, +[0x58] {0,0, "POP%S %OAX"}, +[0x59] {0,0, "POP%S %OCX"}, +[0x5a] {0,0, "POP%S %ODX"}, +[0x5b] {0,0, "POP%S %OBX"}, +[0x5c] {0,0, "POP%S %OSP"}, +[0x5d] {0,0, "POP%S %OBP"}, +[0x5e] {0,0, "POP%S %OSI"}, +[0x5f] {0,0, "POP%S %ODI"}, +[0x60] {0,0, "PUSHA%S"}, +[0x61] {0,0, "POPA%S"}, +[0x62] {RMM,0, "BOUND %e,%r"}, +[0x63] {RM,0, "ARPL %r,%e"}, +[0x64] {SEG,0, "FS:"}, +[0x65] {SEG,0, "GS:"}, +[0x66] {OPOVER,0, ""}, +[0x67] {ADDOVER,0, ""}, +[0x68] {Iwd,0, "PUSH%S %i"}, +[0x69] {RM,Iwd, "IMUL%S %e,%i,%r"}, +[0x6a] {Ib,0, "PUSH%S %i"}, +[0x6b] {RM,Ibs, "IMUL%S %e,%i,%r"}, +[0x6c] {0,0, "INSB DX,(%ODI)"}, +[0x6d] {0,0, "INS%S DX,(%ODI)"}, +[0x6e] {0,0, "OUTSB (%ASI),DX"}, +[0x6f] {0,0, "OUTS%S (%ASI),DX"}, +[0x70] {Jbs,0, "JOS %p"}, +[0x71] {Jbs,0, "JOC %p"}, +[0x72] {Jbs,0, "JCS %p"}, +[0x73] {Jbs,0, "JCC %p"}, +[0x74] {Jbs,0, "JEQ %p"}, +[0x75] {Jbs,0, "JNE %p"}, +[0x76] {Jbs,0, "JLS %p"}, +[0x77] {Jbs,0, "JHI %p"}, +[0x78] {Jbs,0, "JMI %p"}, +[0x79] {Jbs,0, "JPL %p"}, +[0x7a] {Jbs,0, "JPS %p"}, +[0x7b] {Jbs,0, "JPC %p"}, +[0x7c] {Jbs,0, "JLT %p"}, +[0x7d] {Jbs,0, "JGE %p"}, +[0x7e] {Jbs,0, "JLE %p"}, +[0x7f] {Jbs,0, "JGT %p"}, +[0x80] {RMOPB,0, optab80}, +[0x81] {RMOP,0, optab81}, +[0x83] {RMOP,0, optab83}, +[0x84] {RMB,0, "TESTB %r,%e"}, +[0x85] {RM,0, "TEST%S %r,%e"}, +[0x86] {RMB,0, "XCHGB %r,%e"}, +[0x87] {RM,0, "XCHG%S %r,%e"}, +[0x88] {RMB,0, "MOVB %r,%e"}, +[0x89] {RM,0, "MOV%S %r,%e"}, +[0x8a] {RMB,0, "MOVB %e,%r"}, +[0x8b] {RM,0, "MOV%S %e,%r"}, +[0x8c] {RM,0, "MOVW %g,%e"}, +[0x8d] {RM,0, "LEA%S %e,%r"}, +[0x8e] {RM,0, "MOVW %e,%g"}, +[0x8f] {RM,0, "POP%S %e"}, +[0x90] {0,0, "NOP"}, +[0x91] {0,0, "XCHG %OCX,%OAX"}, +[0x92] {0,0, "XCHG %ODX,%OAX"}, +[0x93] {0,0, "XCHG %OBX,%OAX"}, +[0x94] {0,0, "XCHG %OSP,%OAX"}, +[0x95] {0,0, "XCHG %OBP,%OAX"}, +[0x96] {0,0, "XCHG %OSI,%OAX"}, +[0x97] {0,0, "XCHG %ODI,%OAX"}, +[0x98] {0,0, "%W"}, /* miserable CBW or CWDE */ +[0x99] {0,0, "%w"}, /* idiotic CWD or CDQ */ +[0x9a] {PTR,0, "CALL%S %d"}, +[0x9b] {0,0, "WAIT"}, +[0x9c] {0,0, "PUSHF"}, +[0x9d] {0,0, "POPF"}, +[0x9e] {0,0, "SAHF"}, +[0x9f] {0,0, "LAHF"}, +[0xa0] {Awd,0, "MOVB %i,AL"}, +[0xa1] {Awd,0, "MOV%S %i,%OAX"}, +[0xa2] {Awd,0, "MOVB AL,%i"}, +[0xa3] {Awd,0, "MOV%S %OAX,%i"}, +[0xa4] {0,0, "MOVSB (%ASI),(%ADI)"}, +[0xa5] {0,0, "MOVS%S (%ASI),(%ADI)"}, +[0xa6] {0,0, "CMPSB (%ASI),(%ADI)"}, +[0xa7] {0,0, "CMPS%S (%ASI),(%ADI)"}, +[0xa8] {Ib,0, "TESTB %i,AL"}, +[0xa9] {Iwd,0, "TEST%S %i,%OAX"}, +[0xaa] {0,0, "STOSB AL,(%ADI)"}, +[0xab] {0,0, "STOS%S %OAX,(%ADI)"}, +[0xac] {0,0, "LODSB (%ASI),AL"}, +[0xad] {0,0, "LODS%S (%ASI),%OAX"}, +[0xae] {0,0, "SCASB (%ADI),AL"}, +[0xaf] {0,0, "SCAS%S (%ADI),%OAX"}, +[0xb0] {Ib,0, "MOVB %i,AL"}, +[0xb1] {Ib,0, "MOVB %i,CL"}, +[0xb2] {Ib,0, "MOVB %i,DL"}, +[0xb3] {Ib,0, "MOVB %i,BL"}, +[0xb4] {Ib,0, "MOVB %i,AH"}, +[0xb5] {Ib,0, "MOVB %i,CH"}, +[0xb6] {Ib,0, "MOVB %i,DH"}, +[0xb7] {Ib,0, "MOVB %i,BH"}, +[0xb8] {Iwdq,0, "MOV%S %i,%OAX"}, +[0xb9] {Iwdq,0, "MOV%S %i,%OCX"}, +[0xba] {Iwdq,0, "MOV%S %i,%ODX"}, +[0xbb] {Iwdq,0, "MOV%S %i,%OBX"}, +[0xbc] {Iwdq,0, "MOV%S %i,%OSP"}, +[0xbd] {Iwdq,0, "MOV%S %i,%OBP"}, +[0xbe] {Iwdq,0, "MOV%S %i,%OSI"}, +[0xbf] {Iwdq,0, "MOV%S %i,%ODI"}, +[0xc0] {RMOPB,0, optabC0}, +[0xc1] {RMOP,0, optabC1}, +[0xc2] {Iw,0, "RET %i"}, +[0xc3] {RET,0, "RET"}, +[0xc4] {RM,0, "LES %e,%r"}, +[0xc5] {RM,0, "LDS %e,%r"}, +[0xc6] {RMB,Ib, "MOVB %i,%e"}, +[0xc7] {RM,Iwd, "MOV%S %i,%e"}, +[0xc8] {Iw2,Ib, "ENTER %i,%I"}, /* loony ENTER */ +[0xc9] {RET,0, "LEAVE"}, /* bizarre LEAVE */ +[0xca] {Iw,0, "RETF %i"}, +[0xcb] {RET,0, "RETF"}, +[0xcc] {0,0, "INT 3"}, +[0xcd] {Ib,0, "INTB %i"}, +[0xce] {0,0, "INTO"}, +[0xcf] {0,0, "IRET"}, +[0xd0] {RMOPB,0, optabD0}, +[0xd1] {RMOP,0, optabD1}, +[0xd2] {RMOPB,0, optabD2}, +[0xd3] {RMOP,0, optabD3}, +[0xd4] {OA,0, "AAM"}, +[0xd5] {OA,0, "AAD"}, +[0xd7] {0,0, "XLAT"}, +[0xd8] {FRMOP,0, optabD8}, +[0xd9] {FRMEX,0, optabD9}, +[0xda] {FRMOP,0, optabDA}, +[0xdb] {FRMEX,0, optabDB}, +[0xdc] {FRMOP,0, optabDC}, +[0xdd] {FRMOP,0, optabDD}, +[0xde] {FRMOP,0, optabDE}, +[0xdf] {FRMOP,0, optabDF}, +[0xe0] {Jbs,0, "LOOPNE %p"}, +[0xe1] {Jbs,0, "LOOPE %p"}, +[0xe2] {Jbs,0, "LOOP %p"}, +[0xe3] {Jbs,0, "JCXZ %p"}, +[0xe4] {Ib,0, "INB %i,AL"}, +[0xe5] {Ib,0, "IN%S %i,%OAX"}, +[0xe6] {Ib,0, "OUTB AL,%i"}, +[0xe7] {Ib,0, "OUT%S %OAX,%i"}, +[0xe8] {Iwds,0, "CALL %p"}, +[0xe9] {Iwds,0, "JMP %p"}, +[0xea] {PTR,0, "JMP %d"}, +[0xeb] {Jbs,0, "JMP %p"}, +[0xec] {0,0, "INB DX,AL"}, +[0xed] {0,0, "IN%S DX,%OAX"}, +[0xee] {0,0, "OUTB AL,DX"}, +[0xef] {0,0, "OUT%S %OAX,DX"}, +[0xf0] {PRE,0, "LOCK"}, +[0xf2] {OPRE,0, "REPNE"}, +[0xf3] {OPRE,0, "REP"}, +[0xf4] {0,0, "HLT"}, +[0xf5] {0,0, "CMC"}, +[0xf6] {RMOPB,0, optabF6}, +[0xf7] {RMOP,0, optabF7}, +[0xf8] {0,0, "CLC"}, +[0xf9] {0,0, "STC"}, +[0xfa] {0,0, "CLI"}, +[0xfb] {0,0, "STI"}, +[0xfc] {0,0, "CLD"}, +[0xfd] {0,0, "STD"}, +[0xfe] {RMOPB,0, optabFE}, +[0xff] {RMOP,0, optabFF}, +[0x100] {RM,0, "MOVLQSX %r,%e"}, }; /* diff -r b51fd2d6c160 src/libmach/executable.c --- a/src/libmach/executable.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/libmach/executable.c Wed Nov 11 19:17:22 2009 +0000 @@ -501,6 +501,10 @@ { int32 pgsize; uvlong entry; + union { + char *p; + uvlong *v; + } u; hswal(&hp->e, sizeof(Exec)/sizeof(int32), beswal); if(!(hp->e.exechdr.magic & HDR_MAGIC)) @@ -514,10 +518,6 @@ */ if((hp->e.exechdr.magic & ~DYN_MAGIC)>>16) return 0; - union { - char *p; - uvlong *v; - } u; u.p = (char*)&hp->e.exechdr; entry = beswav(*u.v); diff -r b51fd2d6c160 src/libmach/obj.c --- a/src/libmach/obj.c Tue Nov 10 20:05:24 2009 -0800 +++ b/src/libmach/obj.c Wed Nov 11 19:17:22 2009 +0000 @@ -81,17 +81,17 @@ static Obj obj[] = { /* functions to identify and parse each type of obj */ - [Obj68020] "68020 .2", _is2, _read2, - [ObjAmd64] "amd64 .6", _is6, _read6, - [ObjArm] "arm .5", _is5, _read5, - [ObjAlpha] "alpha .7", _is7, _read7, - [Obj386] "386 .8", _is8, _read8, - [ObjSparc] "sparc .k", _isk, _readk, - [ObjPower] "power .q", _isq, _readq, - [ObjMips] "mips .v", _isv, _readv, - [ObjSparc64] "sparc64 .u", _isu, _readu, - [ObjPower64] "power64 .9", _is9, _read9, - [Maxobjtype] 0, 0 + [Obj68020] {"68020 .2", _is2, _read2}, + [ObjAmd64] {"amd64 .6", _is6, _read6}, + [ObjArm] {"arm .5", _is5, _read5}, + [ObjAlpha] {"alpha .7", _is7, _read7}, + [Obj386] {"386 .8", _is8, _read8}, + [ObjSparc] {"sparc .k", _isk, _readk}, + [ObjPower] {"power .q", _isq, _readq}, + [ObjMips] {"mips .v", _isv, _readv}, + [ObjSparc64] {"sparc64 .u", _isu, _readu}, + [ObjPower64] {"power64 .9", _is9, _read9}, + [Maxobjtype] {0, 0} }; struct Symtab diff -r b51fd2d6c160 src/make.bash --- a/src/make.bash Tue Nov 10 20:05:24 2009 -0800 +++ b/src/make.bash Wed Nov 11 19:17:22 2009 +0000 @@ -29,10 +29,10 @@ esac case "$GOOS" in -darwin | linux | nacl) +beos | darwin | haiku | linux | nacl) ;; *) - echo '$GOOS is set to <'$GOOS'>, must be darwin, linux, or nacl' 1>&2 + echo '$GOOS is set to <'$GOOS'>, must be beos, darwin, haiku, linux, or nacl' 1>&2 exit 1 esac @@ -44,10 +44,10 @@ if ! (cd lib9 && which quietgcc) >/dev/null 2>&1; then echo "installed quietgcc as $GOBIN/quietgcc but 'which quietgcc' fails" 1>&2 echo "double-check that $GOBIN is in your "'$PATH' 1>&2 - exit 1 + #exit 1 fi -bash clean.bash +#$BASH clean.bash for i in lib9 libbio libmach cmd pkg libcgo cmd/cgo cmd/ebnflint cmd/godoc cmd/gofmt cmd/goyacc cmd/hgpatch do diff -r b51fd2d6c160 src/quietgcc.bash --- a/src/quietgcc.bash Tue Nov 10 20:05:24 2009 -0800 +++ b/src/quietgcc.bash Wed Nov 11 19:17:22 2009 +0000 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright 2009 The Go Authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file.