29 lines
687 B
Go
29 lines
687 B
Go
|
|
package operand
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/mmcloughlin/avo/reg"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestMemAsm(t *testing.T) {
|
||
|
|
cases := []struct {
|
||
|
|
Mem Mem
|
||
|
|
Expect string
|
||
|
|
}{
|
||
|
|
{Mem{Base: reg.EAX}, "(AX)"},
|
||
|
|
{Mem{Disp: 16, Base: reg.RAX}, "16(AX)"},
|
||
|
|
{Mem{Base: reg.R11, Index: reg.RAX, Scale: 4}, "(R11)(AX*4)"},
|
||
|
|
{Mem{Base: reg.R11, Index: reg.RAX, Scale: 1}, "(R11)(AX*1)"},
|
||
|
|
{Mem{Base: reg.R11, Index: reg.RAX}, "(R11)"},
|
||
|
|
{Mem{Base: reg.R11, Scale: 8}, "(R11)"},
|
||
|
|
{Mem{Disp: 2048, Base: reg.R11, Index: reg.RAX, Scale: 8}, "2048(R11)(AX*8)"},
|
||
|
|
}
|
||
|
|
for _, c := range cases {
|
||
|
|
got := c.Mem.Asm()
|
||
|
|
if got != c.Expect {
|
||
|
|
t.Errorf("%#v.Asm() = %s expected %s", c.Mem, got, c.Expect)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|