Files
wazero/internal/asm/amd64/impl_5_test.go
Takeshi Yoneda b8c94fd0b9 asm: remove integration tests with golang-asm (#659)
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
2022-06-28 09:19:21 +09:00

1050 lines
139 KiB
Go

package amd64
import (
"encoding/binary"
"math"
"testing"
"github.com/tetratelabs/wazero/internal/asm"
"github.com/tetratelabs/wazero/internal/testing/require"
)
func TestAssemblerImpl_EncodeConstToMemory(t *testing.T) {
t.Run("error", func(t *testing.T) {
tests := []struct {
n *nodeImpl
expErr string
}{
{
n: &nodeImpl{instruction: ADDL, types: operandTypesConstToMemory, dstReg: RegAX},
expErr: "ADDL is unsupported for from:const,to:memory type",
},
{
n: &nodeImpl{instruction: MOVB, types: operandTypesConstToMemory,
srcConst: math.MaxInt16,
dstReg: RegAX, dstConst: 0xff_ff},
expErr: "too large load target const 32767 for MOVB",
},
{
n: &nodeImpl{instruction: MOVL, types: operandTypesConstToMemory,
srcConst: math.MaxInt64,
dstReg: RegAX, dstConst: 0xff_ff},
expErr: "too large load target const 9223372036854775807 for MOVL",
},
}
for _, tc := range tests {
a := NewAssembler()
err := a.encodeConstToMemory(tc.n)
require.EqualError(t, err, tc.expErr)
}
})
tests := []struct {
name string
inst asm.Instruction
baseReg asm.Register
c, offset int64
exp []byte
}{
{name: "MOVB/c=0/base=AX/offset=0x0", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x0}},
{name: "MOVB/c=1/base=AX/offset=0x0", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=0x0", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0xff}},
{name: "MOVB/c=100/base=AX/offset=0x0", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=0x0", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=0x0", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=0x0", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x0, exp: []byte{0xc6, 0x0, 0x80}},
{name: "MOVB/c=0/base=AX/offset=0x1", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x0}},
{name: "MOVB/c=1/base=AX/offset=0x1", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=0x1", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0xff}},
{name: "MOVB/c=100/base=AX/offset=0x1", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=0x1", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=0x1", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=0x1", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x1, exp: []byte{0xc6, 0x40, 0x1, 0x80}},
{name: "MOVB/c=0/base=AX/offset=-0x1", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x0}},
{name: "MOVB/c=1/base=AX/offset=-0x1", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=-0x1", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0xff}},
{name: "MOVB/c=100/base=AX/offset=-0x1", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=-0x1", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=-0x1", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=-0x1", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x1, exp: []byte{0xc6, 0x40, 0xff, 0x80}},
{name: "MOVB/c=0/base=AX/offset=0x4db", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0}},
{name: "MOVB/c=1/base=AX/offset=0x4db", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=0x4db", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff}},
{name: "MOVB/c=100/base=AX/offset=0x4db", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=0x4db", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=0x4db", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=0x4db", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80}},
{name: "MOVB/c=0/base=AX/offset=-0x4d2", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
{name: "MOVB/c=1/base=AX/offset=-0x4d2", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=-0x4d2", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
{name: "MOVB/c=100/base=AX/offset=-0x4d2", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=-0x4d2", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=-0x4d2", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=-0x4d2", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
{name: "MOVB/c=0/base=AX/offset=0x7fffffff", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0}},
{name: "MOVB/c=1/base=AX/offset=0x7fffffff", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=0x7fffffff", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff}},
{name: "MOVB/c=100/base=AX/offset=0x7fffffff", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=0x7fffffff", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=0x7fffffff", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=0x7fffffff", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80}},
{name: "MOVB/c=0/base=AX/offset=-0x80000000", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0}},
{name: "MOVB/c=1/base=AX/offset=-0x80000000", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=-0x80000000", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff}},
{name: "MOVB/c=100/base=AX/offset=-0x80000000", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=-0x80000000", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=-0x80000000", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=-0x80000000", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80}},
{name: "MOVB/c=0/base=AX/offset=0x7fff", inst: MOVB, c: 0, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVB/c=1/base=AX/offset=0x7fff", inst: MOVB, c: 1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=0x7fff", inst: MOVB, c: -1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff}},
{name: "MOVB/c=100/base=AX/offset=0x7fff", inst: MOVB, c: 100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=0x7fff", inst: MOVB, c: -100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=0x7fff", inst: MOVB, c: 127, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=0x7fff", inst: MOVB, c: -128, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80}},
{name: "MOVB/c=0/base=AX/offset=-0x8000", inst: MOVB, c: 0, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0}},
{name: "MOVB/c=1/base=AX/offset=-0x8000", inst: MOVB, c: 1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1}},
{name: "MOVB/c=-1/base=AX/offset=-0x8000", inst: MOVB, c: -1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVB/c=100/base=AX/offset=-0x8000", inst: MOVB, c: 100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64}},
{name: "MOVB/c=-100/base=AX/offset=-0x8000", inst: MOVB, c: -100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c}},
{name: "MOVB/c=127/base=AX/offset=-0x8000", inst: MOVB, c: 127, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f}},
{name: "MOVB/c=-128/base=AX/offset=-0x8000", inst: MOVB, c: -128, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80}},
{name: "MOVB/c=0/base=R8/offset=0x0", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x0}},
{name: "MOVB/c=1/base=R8/offset=0x0", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=0x0", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0xff}},
{name: "MOVB/c=100/base=R8/offset=0x0", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=0x0", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=0x0", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=0x0", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc6, 0x0, 0x80}},
{name: "MOVB/c=0/base=R8/offset=0x1", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x0}},
{name: "MOVB/c=1/base=R8/offset=0x1", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=0x1", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0xff}},
{name: "MOVB/c=100/base=R8/offset=0x1", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=0x1", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=0x1", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=0x1", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc6, 0x40, 0x1, 0x80}},
{name: "MOVB/c=0/base=R8/offset=-0x1", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x0}},
{name: "MOVB/c=1/base=R8/offset=-0x1", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=-0x1", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0xff}},
{name: "MOVB/c=100/base=R8/offset=-0x1", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=-0x1", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=-0x1", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=-0x1", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc6, 0x40, 0xff, 0x80}},
{name: "MOVB/c=0/base=R8/offset=0x4db", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0}},
{name: "MOVB/c=1/base=R8/offset=0x4db", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=0x4db", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff}},
{name: "MOVB/c=100/base=R8/offset=0x4db", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=0x4db", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=0x4db", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=0x4db", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc6, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80}},
{name: "MOVB/c=0/base=R8/offset=-0x4d2", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
{name: "MOVB/c=1/base=R8/offset=-0x4d2", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=-0x4d2", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
{name: "MOVB/c=100/base=R8/offset=-0x4d2", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=-0x4d2", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=-0x4d2", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=-0x4d2", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc6, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
{name: "MOVB/c=0/base=R8/offset=0x7fffffff", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0}},
{name: "MOVB/c=1/base=R8/offset=0x7fffffff", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=0x7fffffff", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff}},
{name: "MOVB/c=100/base=R8/offset=0x7fffffff", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=0x7fffffff", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=0x7fffffff", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=0x7fffffff", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80}},
{name: "MOVB/c=0/base=R8/offset=-0x80000000", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0}},
{name: "MOVB/c=1/base=R8/offset=-0x80000000", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=-0x80000000", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff}},
{name: "MOVB/c=100/base=R8/offset=-0x80000000", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=-0x80000000", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=-0x80000000", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=-0x80000000", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80}},
{name: "MOVB/c=0/base=R8/offset=0x7fff", inst: MOVB, c: 0, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVB/c=1/base=R8/offset=0x7fff", inst: MOVB, c: 1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=0x7fff", inst: MOVB, c: -1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff}},
{name: "MOVB/c=100/base=R8/offset=0x7fff", inst: MOVB, c: 100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=0x7fff", inst: MOVB, c: -100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=0x7fff", inst: MOVB, c: 127, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=0x7fff", inst: MOVB, c: -128, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc6, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80}},
{name: "MOVB/c=0/base=R8/offset=-0x8000", inst: MOVB, c: 0, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0}},
{name: "MOVB/c=1/base=R8/offset=-0x8000", inst: MOVB, c: 1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1}},
{name: "MOVB/c=-1/base=R8/offset=-0x8000", inst: MOVB, c: -1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVB/c=100/base=R8/offset=-0x8000", inst: MOVB, c: 100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64}},
{name: "MOVB/c=-100/base=R8/offset=-0x8000", inst: MOVB, c: -100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c}},
{name: "MOVB/c=127/base=R8/offset=-0x8000", inst: MOVB, c: 127, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f}},
{name: "MOVB/c=-128/base=R8/offset=-0x8000", inst: MOVB, c: -128, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc6, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80}},
{name: "MOVL/c=0/base=AX/offset=0x0", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=0x0", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=0x0", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=0x0", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=0x0", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=0x0", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=0x0", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=0x0", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=0x0", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=0x0", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=0x0", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=0x0", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=0x0", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x0, exp: []byte{0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=0x1", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=0x1", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=0x1", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=0x1", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=0x1", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=0x1", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=0x1", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=0x1", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=0x1", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=0x1", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=0x1", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=0x1", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=0x1", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x1, exp: []byte{0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=-0x1", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=-0x1", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=-0x1", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=-0x1", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=-0x1", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=-0x1", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=-0x1", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=-0x1", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=-0x1", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=-0x1", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=-0x1", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=-0x1", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=-0x1", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x1, exp: []byte{0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=0x4db", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=0x4db", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=0x4db", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=0x4db", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=0x4db", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=0x4db", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=0x4db", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=0x4db", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=0x4db", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=0x4db", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=0x4db", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=0x4db", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=0x4db", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x4db, exp: []byte{0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=-0x4d2", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=-0x4d2", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=-0x4d2", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=-0x4d2", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=-0x4d2", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=-0x4d2", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=-0x4d2", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=-0x4d2", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=-0x4d2", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=-0x4d2", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=-0x4d2", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=-0x4d2", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=-0x4d2", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x4d2, exp: []byte{0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=0x7fffffff", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=0x7fffffff", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=0x7fffffff", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=0x7fffffff", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=0x7fffffff", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=0x7fffffff", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=0x7fffffff", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=0x7fffffff", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=0x7fffffff", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=0x7fffffff", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=0x7fffffff", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=0x7fffffff", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=0x7fffffff", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=-0x80000000", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=-0x80000000", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=-0x80000000", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=-0x80000000", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=-0x80000000", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=-0x80000000", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=-0x80000000", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=-0x80000000", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=-0x80000000", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=-0x80000000", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=-0x80000000", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=-0x80000000", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=-0x80000000", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x80000000, exp: []byte{0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=0x7fff", inst: MOVL, c: 0, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=0x7fff", inst: MOVL, c: 1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=0x7fff", inst: MOVL, c: -1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=0x7fff", inst: MOVL, c: 100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=0x7fff", inst: MOVL, c: -100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=0x7fff", inst: MOVL, c: 127, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=0x7fff", inst: MOVL, c: -128, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=0x7fff", inst: MOVL, c: 32767, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=0x7fff", inst: MOVL, c: -32768, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=0x7fff", inst: MOVL, c: 1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=0x7fff", inst: MOVL, c: -1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=0x7fff", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=0x7fff", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: 0x7fff, exp: []byte{0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=AX/offset=-0x8000", inst: MOVL, c: 0, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=AX/offset=-0x8000", inst: MOVL, c: 1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=AX/offset=-0x8000", inst: MOVL, c: -1, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=AX/offset=-0x8000", inst: MOVL, c: 100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=AX/offset=-0x8000", inst: MOVL, c: -100, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=AX/offset=-0x8000", inst: MOVL, c: 127, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=AX/offset=-0x8000", inst: MOVL, c: -128, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=AX/offset=-0x8000", inst: MOVL, c: 32767, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=AX/offset=-0x8000", inst: MOVL, c: -32768, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=AX/offset=-0x8000", inst: MOVL, c: 1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=AX/offset=-0x8000", inst: MOVL, c: -1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=AX/offset=-0x8000", inst: MOVL, c: 2147483647, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=AX/offset=-0x8000", inst: MOVL, c: -2147483648, baseReg: RegAX, offset: -0x8000, exp: []byte{0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=0x0", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=0x0", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=0x0", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=0x0", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=0x0", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=0x0", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=0x0", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=0x0", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=0x0", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=0x0", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=0x0", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=0x0", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=0x0", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x0, exp: []byte{0x41, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=0x1", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=0x1", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=0x1", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=0x1", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=0x1", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=0x1", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=0x1", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=0x1", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=0x1", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=0x1", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=0x1", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=0x1", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=0x1", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x1, exp: []byte{0x41, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=-0x1", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=-0x1", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=-0x1", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=-0x1", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=-0x1", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=-0x1", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=-0x1", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=-0x1", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=-0x1", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=-0x1", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=-0x1", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=-0x1", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=-0x1", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x1, exp: []byte{0x41, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=0x4db", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=0x4db", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=0x4db", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=0x4db", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=0x4db", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=0x4db", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=0x4db", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=0x4db", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=0x4db", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=0x4db", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=0x4db", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=0x4db", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=0x4db", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x4db, exp: []byte{0x41, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=-0x4d2", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=-0x4d2", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=-0x4d2", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=-0x4d2", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=-0x4d2", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=-0x4d2", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=-0x4d2", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=-0x4d2", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=-0x4d2", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=-0x4d2", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=-0x4d2", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=-0x4d2", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=-0x4d2", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x41, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=0x7fffffff", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=0x7fffffff", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=0x7fffffff", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=0x7fffffff", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=0x7fffffff", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=0x7fffffff", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=0x7fffffff", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=0x7fffffff", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=0x7fffffff", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=0x7fffffff", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=0x7fffffff", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=0x7fffffff", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=0x7fffffff", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=-0x80000000", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=-0x80000000", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=-0x80000000", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=-0x80000000", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=-0x80000000", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=-0x80000000", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=-0x80000000", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=-0x80000000", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=-0x80000000", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=-0x80000000", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=-0x80000000", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=-0x80000000", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=-0x80000000", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=0x7fff", inst: MOVL, c: 0, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=0x7fff", inst: MOVL, c: 1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=0x7fff", inst: MOVL, c: -1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=0x7fff", inst: MOVL, c: 100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=0x7fff", inst: MOVL, c: -100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=0x7fff", inst: MOVL, c: 127, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=0x7fff", inst: MOVL, c: -128, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=0x7fff", inst: MOVL, c: 32767, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=0x7fff", inst: MOVL, c: -32768, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=0x7fff", inst: MOVL, c: 1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=0x7fff", inst: MOVL, c: -1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=0x7fff", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=0x7fff", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x41, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVL/c=0/base=R8/offset=-0x8000", inst: MOVL, c: 0, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVL/c=1/base=R8/offset=-0x8000", inst: MOVL, c: 1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-1/base=R8/offset=-0x8000", inst: MOVL, c: -1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVL/c=100/base=R8/offset=-0x8000", inst: MOVL, c: 100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-100/base=R8/offset=-0x8000", inst: MOVL, c: -100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVL/c=127/base=R8/offset=-0x8000", inst: MOVL, c: 127, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVL/c=-128/base=R8/offset=-0x8000", inst: MOVL, c: -128, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVL/c=32767/base=R8/offset=-0x8000", inst: MOVL, c: 32767, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVL/c=-32768/base=R8/offset=-0x8000", inst: MOVL, c: -32768, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVL/c=1048576/base=R8/offset=-0x8000", inst: MOVL, c: 1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVL/c=-1048576/base=R8/offset=-0x8000", inst: MOVL, c: -1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVL/c=2147483647/base=R8/offset=-0x8000", inst: MOVL, c: 2147483647, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVL/c=-2147483648/base=R8/offset=-0x8000", inst: MOVL, c: -2147483648, baseReg: RegR8, offset: -0x8000, exp: []byte{0x41, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=0x0", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=0x0", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=0x0", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=0x0", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=0x0", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=0x0", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=0x0", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=0x0", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=0x0", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=0x0", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=0x0", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=0x0", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=0x0", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x0, exp: []byte{0x48, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=0x1", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=0x1", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=0x1", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=0x1", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=0x1", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=0x1", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=0x1", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=0x1", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=0x1", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=0x1", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=0x1", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=0x1", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=0x1", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x1, exp: []byte{0x48, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=-0x1", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=-0x1", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=-0x1", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=-0x1", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=-0x1", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=-0x1", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=-0x1", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=-0x1", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=-0x1", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=-0x1", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=-0x1", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=-0x1", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=-0x1", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x1, exp: []byte{0x48, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=0x4db", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=0x4db", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=0x4db", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=0x4db", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=0x4db", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=0x4db", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=0x4db", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=0x4db", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=0x4db", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=0x4db", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=0x4db", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=0x4db", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=0x4db", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x4db, exp: []byte{0x48, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=-0x4d2", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=-0x4d2", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=-0x4d2", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=-0x4d2", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=-0x4d2", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=-0x4d2", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=-0x4d2", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=-0x4d2", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=-0x4d2", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=-0x4d2", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=-0x4d2", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=-0x4d2", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=-0x4d2", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x4d2, exp: []byte{0x48, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=0x7fffffff", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=0x7fffffff", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=0x7fffffff", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=0x7fffffff", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=0x7fffffff", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=0x7fffffff", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=0x7fffffff", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=0x7fffffff", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=0x7fffffff", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=0x7fffffff", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=0x7fffffff", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=0x7fffffff", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=0x7fffffff", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x7fffffff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=-0x80000000", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=-0x80000000", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=-0x80000000", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=-0x80000000", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=-0x80000000", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=-0x80000000", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=-0x80000000", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=-0x80000000", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=-0x80000000", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=-0x80000000", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=-0x80000000", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=-0x80000000", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=-0x80000000", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x80000000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=0x7fff", inst: MOVQ, c: 0, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=0x7fff", inst: MOVQ, c: 1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=0x7fff", inst: MOVQ, c: -1, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=0x7fff", inst: MOVQ, c: 100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=0x7fff", inst: MOVQ, c: -100, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=0x7fff", inst: MOVQ, c: 127, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=0x7fff", inst: MOVQ, c: -128, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=0x7fff", inst: MOVQ, c: 32767, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=0x7fff", inst: MOVQ, c: -32768, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=0x7fff", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=0x7fff", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=0x7fff", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=0x7fff", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: 0x7fff, exp: []byte{0x48, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=AX/offset=-0x8000", inst: MOVQ, c: 0, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=AX/offset=-0x8000", inst: MOVQ, c: 1, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=AX/offset=-0x8000", inst: MOVQ, c: -1, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=AX/offset=-0x8000", inst: MOVQ, c: 100, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=AX/offset=-0x8000", inst: MOVQ, c: -100, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=AX/offset=-0x8000", inst: MOVQ, c: 127, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=AX/offset=-0x8000", inst: MOVQ, c: -128, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=AX/offset=-0x8000", inst: MOVQ, c: 32767, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=AX/offset=-0x8000", inst: MOVQ, c: -32768, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=AX/offset=-0x8000", inst: MOVQ, c: 1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=AX/offset=-0x8000", inst: MOVQ, c: -1048576, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=AX/offset=-0x8000", inst: MOVQ, c: 2147483647, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=AX/offset=-0x8000", inst: MOVQ, c: -2147483648, baseReg: RegAX, offset: -0x8000, exp: []byte{0x48, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=0x0", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=0x0", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=0x0", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=0x0", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=0x0", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=0x0", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=0x0", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=0x0", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=0x0", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=0x0", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=0x0", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=0x0", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=0x0", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x0, exp: []byte{0x49, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=0x1", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=0x1", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=0x1", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=0x1", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=0x1", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=0x1", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=0x1", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=0x1", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=0x1", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=0x1", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=0x1", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=0x1", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=0x1", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x1, exp: []byte{0x49, 0xc7, 0x40, 0x1, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=-0x1", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=-0x1", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=-0x1", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=-0x1", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=-0x1", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=-0x1", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=-0x1", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=-0x1", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=-0x1", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=-0x1", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=-0x1", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=-0x1", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=-0x1", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x1, exp: []byte{0x49, 0xc7, 0x40, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=0x4db", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=0x4db", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=0x4db", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=0x4db", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=0x4db", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=0x4db", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=0x4db", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=0x4db", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=0x4db", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=0x4db", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=0x4db", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=0x4db", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=0x4db", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x4db, exp: []byte{0x49, 0xc7, 0x80, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=-0x4d2", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=-0x4d2", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=-0x4d2", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=-0x4d2", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=-0x4d2", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=-0x4d2", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=-0x4d2", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=-0x4d2", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=-0x4d2", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=-0x4d2", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=-0x4d2", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=-0x4d2", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=-0x4d2", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x4d2, exp: []byte{0x49, 0xc7, 0x80, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=0x7fffffff", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=0x7fffffff", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=0x7fffffff", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=0x7fffffff", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=0x7fffffff", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=0x7fffffff", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=0x7fffffff", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=0x7fffffff", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=0x7fffffff", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=0x7fffffff", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=0x7fffffff", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=0x7fffffff", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=0x7fffffff", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x7fffffff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=-0x80000000", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=-0x80000000", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=-0x80000000", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=-0x80000000", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=-0x80000000", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=-0x80000000", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=-0x80000000", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=-0x80000000", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=-0x80000000", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=-0x80000000", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=-0x80000000", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=-0x80000000", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=-0x80000000", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x80000000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=0x7fff", inst: MOVQ, c: 0, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=0x7fff", inst: MOVQ, c: 1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=0x7fff", inst: MOVQ, c: -1, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=0x7fff", inst: MOVQ, c: 100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=0x7fff", inst: MOVQ, c: -100, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=0x7fff", inst: MOVQ, c: 127, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=0x7fff", inst: MOVQ, c: -128, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=0x7fff", inst: MOVQ, c: 32767, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=0x7fff", inst: MOVQ, c: -32768, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=0x7fff", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=0x7fff", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=0x7fff", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=0x7fff", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: 0x7fff, exp: []byte{0x49, 0xc7, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "MOVQ/c=0/base=R8/offset=-0x8000", inst: MOVQ, c: 0, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=1/base=R8/offset=-0x8000", inst: MOVQ, c: 1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x1, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-1/base=R8/offset=-0x8000", inst: MOVQ, c: -1, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=100/base=R8/offset=-0x8000", inst: MOVQ, c: 100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x64, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-100/base=R8/offset=-0x8000", inst: MOVQ, c: -100, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x9c, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=127/base=R8/offset=-0x8000", inst: MOVQ, c: 127, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "MOVQ/c=-128/base=R8/offset=-0x8000", inst: MOVQ, c: -128, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff}},
{name: "MOVQ/c=32767/base=R8/offset=-0x8000", inst: MOVQ, c: 32767, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "MOVQ/c=-32768/base=R8/offset=-0x8000", inst: MOVQ, c: -32768, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "MOVQ/c=1048576/base=R8/offset=-0x8000", inst: MOVQ, c: 1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "MOVQ/c=-1048576/base=R8/offset=-0x8000", inst: MOVQ, c: -1048576, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "MOVQ/c=2147483647/base=R8/offset=-0x8000", inst: MOVQ, c: 2147483647, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "MOVQ/c=-2147483648/base=R8/offset=-0x8000", inst: MOVQ, c: -2147483648, baseReg: RegR8, offset: -0x8000, exp: []byte{0x49, 0xc7, 0x80, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
}
for _, tc := range tests {
a := NewAssembler()
err := a.encodeConstToMemory(&nodeImpl{instruction: tc.inst,
types: operandTypesConstToMemory, srcConst: tc.c, dstReg: tc.baseReg, dstConst: int64(tc.offset)})
require.NoError(t, err)
}
}
func TestAssemblerImpl_EncodeMemoryToConst(t *testing.T) {
t.Run("error", func(t *testing.T) {
tests := []struct {
n *nodeImpl
expErr string
}{
{
n: &nodeImpl{instruction: ADDL, types: operandTypesMemoryToConst, dstReg: RegAX},
expErr: "ADDL is unsupported for from:memory,to:const type",
},
}
for _, tc := range tests {
a := NewAssembler()
err := a.encodeMemoryToConst(tc.n)
require.EqualError(t, err, tc.expErr)
}
})
tests := []struct {
name string
inst asm.Instruction
baseReg asm.Register
offset, c int64
exp []byte
}{
{name: "CMPL/base=AX/offset=0x0/c=0", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 0, exp: []byte{0x83, 0x38, 0x0}},
{name: "CMPL/base=AX/offset=0x0/c=1", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 1, exp: []byte{0x83, 0x38, 0x1}},
{name: "CMPL/base=AX/offset=0x0/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -1, exp: []byte{0x83, 0x38, 0xff}},
{name: "CMPL/base=AX/offset=0x0/c=100", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 100, exp: []byte{0x83, 0x38, 0x64}},
{name: "CMPL/base=AX/offset=0x0/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -100, exp: []byte{0x83, 0x38, 0x9c}},
{name: "CMPL/base=AX/offset=0x0/c=127", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 127, exp: []byte{0x83, 0x38, 0x7f}},
{name: "CMPL/base=AX/offset=0x0/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -128, exp: []byte{0x83, 0x38, 0x80}},
{name: "CMPL/base=AX/offset=0x0/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 32767, exp: []byte{0x81, 0x38, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x0/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -32768, exp: []byte{0x81, 0x38, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=0x0/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 1048576, exp: []byte{0x81, 0x38, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=0x0/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -1048576, exp: []byte{0x81, 0x38, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=0x0/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x0, c: 2147483647, exp: []byte{0x81, 0x38, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=0x0/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x0, c: -2147483648, exp: []byte{0x81, 0x38, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=0x1/c=0", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 0, exp: []byte{0x83, 0x78, 0x1, 0x0}},
{name: "CMPL/base=AX/offset=0x1/c=1", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 1, exp: []byte{0x83, 0x78, 0x1, 0x1}},
{name: "CMPL/base=AX/offset=0x1/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -1, exp: []byte{0x83, 0x78, 0x1, 0xff}},
{name: "CMPL/base=AX/offset=0x1/c=100", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 100, exp: []byte{0x83, 0x78, 0x1, 0x64}},
{name: "CMPL/base=AX/offset=0x1/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -100, exp: []byte{0x83, 0x78, 0x1, 0x9c}},
{name: "CMPL/base=AX/offset=0x1/c=127", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 127, exp: []byte{0x83, 0x78, 0x1, 0x7f}},
{name: "CMPL/base=AX/offset=0x1/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -128, exp: []byte{0x83, 0x78, 0x1, 0x80}},
{name: "CMPL/base=AX/offset=0x1/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 32767, exp: []byte{0x81, 0x78, 0x1, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x1/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -32768, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=0x1/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 1048576, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=0x1/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -1048576, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=0x1/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x1, c: 2147483647, exp: []byte{0x81, 0x78, 0x1, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=0x1/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x1, c: -2147483648, exp: []byte{0x81, 0x78, 0x1, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=-0x1/c=0", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 0, exp: []byte{0x83, 0x78, 0xff, 0x0}},
{name: "CMPL/base=AX/offset=-0x1/c=1", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 1, exp: []byte{0x83, 0x78, 0xff, 0x1}},
{name: "CMPL/base=AX/offset=-0x1/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -1, exp: []byte{0x83, 0x78, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x1/c=100", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 100, exp: []byte{0x83, 0x78, 0xff, 0x64}},
{name: "CMPL/base=AX/offset=-0x1/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -100, exp: []byte{0x83, 0x78, 0xff, 0x9c}},
{name: "CMPL/base=AX/offset=-0x1/c=127", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 127, exp: []byte{0x83, 0x78, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x1/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -128, exp: []byte{0x83, 0x78, 0xff, 0x80}},
{name: "CMPL/base=AX/offset=-0x1/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 32767, exp: []byte{0x81, 0x78, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=-0x1/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -32768, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x1/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 1048576, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=-0x1/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -1048576, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=-0x1/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x1, c: 2147483647, exp: []byte{0x81, 0x78, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x1/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x1, c: -2147483648, exp: []byte{0x81, 0x78, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=0x4db/c=0", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 0, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x4db/c=1", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 1, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x1}},
{name: "CMPL/base=AX/offset=0x4db/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -1, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff}},
{name: "CMPL/base=AX/offset=0x4db/c=100", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 100, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x64}},
{name: "CMPL/base=AX/offset=0x4db/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -100, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
{name: "CMPL/base=AX/offset=0x4db/c=127", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 127, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
{name: "CMPL/base=AX/offset=0x4db/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -128, exp: []byte{0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=0x4db/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 32767, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x4db/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -32768, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=0x4db/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 1048576, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=0x4db/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -1048576, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=0x4db/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: 2147483647, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=0x4db/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x4db, c: -2147483648, exp: []byte{0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=-0x4d2/c=0", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 0, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
{name: "CMPL/base=AX/offset=-0x4d2/c=1", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 1, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
{name: "CMPL/base=AX/offset=-0x4d2/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -1, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x4d2/c=100", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 100, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
{name: "CMPL/base=AX/offset=-0x4d2/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -100, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
{name: "CMPL/base=AX/offset=-0x4d2/c=127", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 127, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x4d2/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -128, exp: []byte{0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
{name: "CMPL/base=AX/offset=-0x4d2/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 32767, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=-0x4d2/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -32768, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x4d2/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 1048576, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=-0x4d2/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -1048576, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=-0x4d2/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: 2147483647, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x4d2/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x4d2, c: -2147483648, exp: []byte{0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=0", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 0, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=1", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 1, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x1}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -1, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=100", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 100, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x64}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -100, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=127", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 127, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -128, exp: []byte{0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x80}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 32767, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -32768, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 1048576, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -1048576, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: 2147483647, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=0x7fffffff/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x7fffffff, c: -2147483648, exp: []byte{0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=-0x80000000/c=0", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 0, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0}},
{name: "CMPL/base=AX/offset=-0x80000000/c=1", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 1, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x1}},
{name: "CMPL/base=AX/offset=-0x80000000/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -1, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff}},
{name: "CMPL/base=AX/offset=-0x80000000/c=100", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 100, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x64}},
{name: "CMPL/base=AX/offset=-0x80000000/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -100, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x9c}},
{name: "CMPL/base=AX/offset=-0x80000000/c=127", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 127, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x7f}},
{name: "CMPL/base=AX/offset=-0x80000000/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -128, exp: []byte{0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x80}},
{name: "CMPL/base=AX/offset=-0x80000000/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 32767, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=-0x80000000/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -32768, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x80000000/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 1048576, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=-0x80000000/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -1048576, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=-0x80000000/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: 2147483647, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x80000000/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x80000000, c: -2147483648, exp: []byte{0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=0x7fff/c=0", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 0, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x7fff/c=1", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 1, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x1}},
{name: "CMPL/base=AX/offset=0x7fff/c=-1", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -1, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff}},
{name: "CMPL/base=AX/offset=0x7fff/c=100", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 100, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x64}},
{name: "CMPL/base=AX/offset=0x7fff/c=-100", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -100, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
{name: "CMPL/base=AX/offset=0x7fff/c=127", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 127, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
{name: "CMPL/base=AX/offset=0x7fff/c=-128", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -128, exp: []byte{0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=0x7fff/c=32767", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 32767, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=0x7fff/c=-32768", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -32768, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=0x7fff/c=1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 1048576, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=0x7fff/c=-1048576", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -1048576, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=0x7fff/c=2147483647", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: 2147483647, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=0x7fff/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: 0x7fff, c: -2147483648, exp: []byte{0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=AX/offset=-0x8000/c=0", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 0, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0}},
{name: "CMPL/base=AX/offset=-0x8000/c=1", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 1, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x1}},
{name: "CMPL/base=AX/offset=-0x8000/c=-1", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -1, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x8000/c=100", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 100, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x64}},
{name: "CMPL/base=AX/offset=-0x8000/c=-100", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -100, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x9c}},
{name: "CMPL/base=AX/offset=-0x8000/c=127", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 127, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x8000/c=-128", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -128, exp: []byte{0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x80}},
{name: "CMPL/base=AX/offset=-0x8000/c=32767", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 32767, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=AX/offset=-0x8000/c=-32768", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -32768, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=AX/offset=-0x8000/c=1048576", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 1048576, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=AX/offset=-0x8000/c=-1048576", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -1048576, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=AX/offset=-0x8000/c=2147483647", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: 2147483647, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=AX/offset=-0x8000/c=-2147483648", inst: CMPL, baseReg: RegAX, offset: -0x8000, c: -2147483648, exp: []byte{0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x0/c=0", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 0, exp: []byte{0x41, 0x83, 0x38, 0x0}},
{name: "CMPL/base=R8/offset=0x0/c=1", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 1, exp: []byte{0x41, 0x83, 0x38, 0x1}},
{name: "CMPL/base=R8/offset=0x0/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -1, exp: []byte{0x41, 0x83, 0x38, 0xff}},
{name: "CMPL/base=R8/offset=0x0/c=100", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 100, exp: []byte{0x41, 0x83, 0x38, 0x64}},
{name: "CMPL/base=R8/offset=0x0/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -100, exp: []byte{0x41, 0x83, 0x38, 0x9c}},
{name: "CMPL/base=R8/offset=0x0/c=127", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 127, exp: []byte{0x41, 0x83, 0x38, 0x7f}},
{name: "CMPL/base=R8/offset=0x0/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -128, exp: []byte{0x41, 0x83, 0x38, 0x80}},
{name: "CMPL/base=R8/offset=0x0/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 32767, exp: []byte{0x41, 0x81, 0x38, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x0/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -32768, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=0x0/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 1048576, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=0x0/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -1048576, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=0x0/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x0, c: 2147483647, exp: []byte{0x41, 0x81, 0x38, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=0x0/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x0, c: -2147483648, exp: []byte{0x41, 0x81, 0x38, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x1/c=0", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 0, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x0}},
{name: "CMPL/base=R8/offset=0x1/c=1", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 1, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x1}},
{name: "CMPL/base=R8/offset=0x1/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -1, exp: []byte{0x41, 0x83, 0x78, 0x1, 0xff}},
{name: "CMPL/base=R8/offset=0x1/c=100", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 100, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x64}},
{name: "CMPL/base=R8/offset=0x1/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -100, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x9c}},
{name: "CMPL/base=R8/offset=0x1/c=127", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 127, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x7f}},
{name: "CMPL/base=R8/offset=0x1/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -128, exp: []byte{0x41, 0x83, 0x78, 0x1, 0x80}},
{name: "CMPL/base=R8/offset=0x1/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 32767, exp: []byte{0x41, 0x81, 0x78, 0x1, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x1/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -32768, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=0x1/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 1048576, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=0x1/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -1048576, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=0x1/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x1, c: 2147483647, exp: []byte{0x41, 0x81, 0x78, 0x1, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=0x1/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x1, c: -2147483648, exp: []byte{0x41, 0x81, 0x78, 0x1, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=-0x1/c=0", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 0, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x0}},
{name: "CMPL/base=R8/offset=-0x1/c=1", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 1, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x1}},
{name: "CMPL/base=R8/offset=-0x1/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -1, exp: []byte{0x41, 0x83, 0x78, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x1/c=100", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 100, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x64}},
{name: "CMPL/base=R8/offset=-0x1/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -100, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x9c}},
{name: "CMPL/base=R8/offset=-0x1/c=127", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 127, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x1/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -128, exp: []byte{0x41, 0x83, 0x78, 0xff, 0x80}},
{name: "CMPL/base=R8/offset=-0x1/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 32767, exp: []byte{0x41, 0x81, 0x78, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=-0x1/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -32768, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x1/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 1048576, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=-0x1/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -1048576, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=-0x1/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x1, c: 2147483647, exp: []byte{0x41, 0x81, 0x78, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x1/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x1, c: -2147483648, exp: []byte{0x41, 0x81, 0x78, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x4db/c=0", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x4db/c=1", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x1}},
{name: "CMPL/base=R8/offset=0x4db/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff}},
{name: "CMPL/base=R8/offset=0x4db/c=100", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x64}},
{name: "CMPL/base=R8/offset=0x4db/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x9c}},
{name: "CMPL/base=R8/offset=0x4db/c=127", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x7f}},
{name: "CMPL/base=R8/offset=0x4db/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x4db/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x4db/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=0x4db/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=0x4db/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=0x4db/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=0x4db/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x4db, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0xdb, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=-0x4d2/c=0", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0}},
{name: "CMPL/base=R8/offset=-0x4d2/c=1", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x1}},
{name: "CMPL/base=R8/offset=-0x4d2/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x4d2/c=100", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x64}},
{name: "CMPL/base=R8/offset=-0x4d2/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x9c}},
{name: "CMPL/base=R8/offset=-0x4d2/c=127", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x4d2/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x80}},
{name: "CMPL/base=R8/offset=-0x4d2/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=-0x4d2/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x4d2/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=-0x4d2/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=-0x4d2/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x4d2/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x4d2, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0x2e, 0xfb, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=0", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=1", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x1}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=100", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x64}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x9c}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=127", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x7f}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x80}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=0x7fffffff/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x7fffffff, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=-0x80000000/c=0", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0}},
{name: "CMPL/base=R8/offset=-0x80000000/c=1", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x1}},
{name: "CMPL/base=R8/offset=-0x80000000/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff}},
{name: "CMPL/base=R8/offset=-0x80000000/c=100", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x64}},
{name: "CMPL/base=R8/offset=-0x80000000/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x9c}},
{name: "CMPL/base=R8/offset=-0x80000000/c=127", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x7f}},
{name: "CMPL/base=R8/offset=-0x80000000/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x80}},
{name: "CMPL/base=R8/offset=-0x80000000/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=-0x80000000/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x80000000/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=-0x80000000/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=-0x80000000/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x80000000/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x80000000, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x7fff/c=0", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x7fff/c=1", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x1}},
{name: "CMPL/base=R8/offset=0x7fff/c=-1", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff}},
{name: "CMPL/base=R8/offset=0x7fff/c=100", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x64}},
{name: "CMPL/base=R8/offset=0x7fff/c=-100", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x9c}},
{name: "CMPL/base=R8/offset=0x7fff/c=127", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x7f}},
{name: "CMPL/base=R8/offset=0x7fff/c=-128", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=0x7fff/c=32767", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=0x7fff/c=-32768", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=0x7fff/c=1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=0x7fff/c=-1048576", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=0x7fff/c=2147483647", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=0x7fff/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: 0x7fff, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}},
{name: "CMPL/base=R8/offset=-0x8000/c=0", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 0, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0}},
{name: "CMPL/base=R8/offset=-0x8000/c=1", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x1}},
{name: "CMPL/base=R8/offset=-0x8000/c=-1", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -1, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x8000/c=100", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x64}},
{name: "CMPL/base=R8/offset=-0x8000/c=-100", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -100, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x9c}},
{name: "CMPL/base=R8/offset=-0x8000/c=127", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 127, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x8000/c=-128", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -128, exp: []byte{0x41, 0x83, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x80}},
{name: "CMPL/base=R8/offset=-0x8000/c=32767", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 32767, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0x7f, 0x0, 0x0}},
{name: "CMPL/base=R8/offset=-0x8000/c=-32768", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -32768, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x80, 0xff, 0xff}},
{name: "CMPL/base=R8/offset=-0x8000/c=1048576", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x10, 0x0}},
{name: "CMPL/base=R8/offset=-0x8000/c=-1048576", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -1048576, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0xf0, 0xff}},
{name: "CMPL/base=R8/offset=-0x8000/c=2147483647", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: 2147483647, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f}},
{name: "CMPL/base=R8/offset=-0x8000/c=-2147483648", inst: CMPL, baseReg: RegR8, offset: -0x8000, c: -2147483648, exp: []byte{0x41, 0x81, 0xb8, 0x0, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x80}},
}
for _, tc := range tests {
a := NewAssembler()
err := a.encodeMemoryToConst(&nodeImpl{instruction: tc.inst,
types: operandTypesMemoryToConst, srcReg: tc.baseReg, srcConst: tc.offset, dstConst: tc.c})
require.NoError(t, err, tc.name)
require.Equal(t, tc.exp, a.buf.Bytes(), tc.name)
}
}
func TestAssemblerImpl_ResolveForwardRelativeJumps(t *testing.T) {
t.Run("long jump", func(t *testing.T) {
t.Run("error", func(t *testing.T) {
originOffset, targetOffset := uint64(0), uint64(math.MaxInt64)
origin := &nodeImpl{instruction: JMP, offsetInBinaryField: originOffset}
target := &nodeImpl{offsetInBinaryField: targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
a := NewAssembler()
err := a.ResolveForwardRelativeJumps(target)
require.EqualError(t, err, "too large jump offset 9223372036854775802 for encoding JMP")
})
t.Run("ok", func(t *testing.T) {
originOffset := uint64(0)
tests := []struct {
instruction asm.Instruction
targetOffset uint64
expectedOffsetFromEIP int32
writtenOffsetIndexInBinary int
}{
{
instruction: JMP, targetOffset: 1234,
writtenOffsetIndexInBinary: 1, // JMP has one opcode byte for long jump.
expectedOffsetFromEIP: 1234 - 5, // the instruction length of long relative jmp.
},
{
instruction: JCC, targetOffset: 1234,
writtenOffsetIndexInBinary: 2, // Conditional jumps has two opcode for long jump.
expectedOffsetFromEIP: 1234 - 6, // the instruction length of long relative JCC
},
}
for _, tt := range tests {
tc := tt
origin := &nodeImpl{instruction: tc.instruction, offsetInBinaryField: originOffset}
target := &nodeImpl{offsetInBinaryField: tc.targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
a := NewAssembler()
// Grow the capacity of buffer so that we could put the offset.
a.buf.Write([]byte{0, 0, 0, 0, 0, 0}) // Relative long jumps are at most 6 bytes.
err := a.ResolveForwardRelativeJumps(target)
require.NoError(t, err)
actual := binary.LittleEndian.Uint32(a.buf.Bytes()[tc.writtenOffsetIndexInBinary:])
require.Equal(t, tc.expectedOffsetFromEIP, int32(actual))
}
})
})
t.Run("short jump", func(t *testing.T) {
t.Run("reassemble", func(t *testing.T) {
originOffset := uint64(0)
tests := []struct {
instruction asm.Instruction
targetOffset uint64
}{
{
instruction: JMP,
targetOffset: 10000,
},
{
instruction: JMP,
// Relative jump offset = 130 - len(JMP instruction bytes) = 130 - 2 = 128 > math.MaxInt8.
targetOffset: 130,
},
{
instruction: JCC,
targetOffset: 10000,
},
{
instruction: JCC,
// Relative jump offset = 130 - len(JCC instruction bytes) = 130 -2 = 128 > math.MaxInt8.
targetOffset: 130,
},
}
for _, tt := range tests {
tc := tt
origin := &nodeImpl{instruction: tc.instruction, offsetInBinaryField: originOffset, flag: nodeFlagShortForwardJump}
target := &nodeImpl{offsetInBinaryField: tc.targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
origin.jumpTarget = target
a := NewAssembler()
err := a.ResolveForwardRelativeJumps(target)
require.NoError(t, err)
require.True(t, a.forceReAssemble)
require.True(t, origin.flag&nodeFlagShortForwardJump == 0)
}
})
t.Run("ok", func(t *testing.T) {
originOffset := uint64(0)
tests := []struct {
instruction asm.Instruction
targetOffset uint64
expectedOffsetFromEIP byte
}{
{
instruction: JMP, targetOffset: 129,
expectedOffsetFromEIP: 129 - 2, // short jumps are of 2 bytes.
},
{
instruction: JCC, targetOffset: 129,
expectedOffsetFromEIP: 129 - 2, // short jumps are of 2 bytes.
},
}
for _, tt := range tests {
tc := tt
origin := &nodeImpl{instruction: tc.instruction, offsetInBinaryField: originOffset, flag: nodeFlagShortForwardJump}
target := &nodeImpl{offsetInBinaryField: tc.targetOffset, jumpOrigins: map[*nodeImpl]struct{}{origin: {}}}
origin.jumpTarget = target
a := NewAssembler()
// Grow the capacity of buffer so that we could put the offset.
a.buf.Write([]byte{0, 0}) // Relative short jumps are of 2 bytes.
err := a.ResolveForwardRelativeJumps(target)
require.NoError(t, err)
actual := a.buf.Bytes()[1] // For short jumps, the opcode has one opcode so the offset is writte at 2nd byte.
require.Equal(t, tc.expectedOffsetFromEIP, actual)
}
})
})
}