diff --git a/operand/checks.go b/operand/checks.go index 493ec59..322457b 100644 --- a/operand/checks.go +++ b/operand/checks.go @@ -181,6 +181,7 @@ func IsM64(op Op) bool { // registers of the given size in bytes. func IsMSize(op Op, n uint) bool { // TODO(mbm): should memory operands have a size attribute as well? + // TODO(mbm): m8,m16,m32,m64 checks do not actually check size m, ok := op.(Mem) return ok && IsMReg(m.Base) && (m.Index == nil || IsMReg(m.Index)) } diff --git a/operand/checks_test.go b/operand/checks_test.go index 30aa881..e51144a 100644 --- a/operand/checks_test.go +++ b/operand/checks_test.go @@ -97,29 +97,29 @@ func TestChecks(t *testing.T) { {IsM, Mem{Base: reg.CX}, true}, {IsM, Mem{Base: reg.ECX}, true}, {IsM, Mem{Base: reg.RCX}, true}, - {IsM, Mem{Base: reg.CL}, false}, + {IsM, Mem{Base: reg.X0}, false}, {IsM8, Mem{Disp: 8, Base: reg.CL}, true}, {IsM8, Mem{Disp: 8, Base: reg.CL, Index: reg.AH, Scale: 2}, true}, - {IsM8, Mem{Disp: 8, Base: reg.AX, Index: reg.AH, Scale: 2}, false}, - {IsM8, Mem{Disp: 8, Base: reg.CL, Index: reg.R10, Scale: 2}, false}, + {IsM8, Mem{Disp: 8, Base: reg.X0, Index: reg.AH, Scale: 2}, false}, + {IsM8, Mem{Disp: 8, Base: reg.CL, Index: reg.X0, Scale: 2}, false}, {IsM16, Mem{Disp: 4, Base: reg.DX}, true}, {IsM16, Mem{Disp: 4, Base: reg.R13W, Index: reg.R8W, Scale: 2}, true}, - {IsM16, Mem{Disp: 4, Base: reg.ESI, Index: reg.R8W, Scale: 2}, false}, - {IsM16, Mem{Disp: 4, Base: reg.R13W, Index: reg.R9, Scale: 2}, false}, + {IsM16, Mem{Disp: 4, Base: reg.X0, Index: reg.R8W, Scale: 2}, false}, + {IsM16, Mem{Disp: 4, Base: reg.R13W, Index: reg.X0, Scale: 2}, false}, {IsM32, Mem{Base: reg.R13L, Index: reg.EBX, Scale: 2}, true}, - {IsM32, Mem{Base: reg.R13W}, false}, + {IsM32, Mem{Base: reg.X0}, false}, {IsM64, Mem{Base: reg.RBX, Index: reg.R12, Scale: 2}, true}, - {IsM64, Mem{Base: reg.R13L}, false}, + {IsM64, Mem{Base: reg.X0}, false}, {IsM128, Mem{Base: reg.RBX, Index: reg.R12, Scale: 2}, true}, - {IsM128, Mem{Base: reg.R13L}, false}, + {IsM128, Mem{Base: reg.X0}, false}, {IsM256, Mem{Base: reg.RBX, Index: reg.R12, Scale: 2}, true}, - {IsM256, Mem{Base: reg.R13L}, false}, + {IsM256, Mem{Base: reg.X0}, false}, // Argument references (special cases of memory operands) {IsM, NewParamAddr("foo", 4), true},