operand: include '+0' in named symbol references
Intended to address an asmdecl error. [amd64] Butterfly: use of unnamed argument 0(FP); offset 0 is x0+0(FP) Updates #24
This commit is contained in:
@@ -87,12 +87,10 @@ func (m Mem) Idx(r reg.Register, s uint8) Mem {
|
||||
// Asm returns an assembly syntax representation of m.
|
||||
func (m Mem) Asm() string {
|
||||
a := m.Symbol.String()
|
||||
if m.Disp != 0 {
|
||||
if a == "" {
|
||||
a += fmt.Sprintf("%d", m.Disp)
|
||||
} else {
|
||||
a += fmt.Sprintf("%+d", m.Disp)
|
||||
}
|
||||
if a != "" {
|
||||
a += fmt.Sprintf("%+d", m.Disp)
|
||||
} else if m.Disp != 0 {
|
||||
a += fmt.Sprintf("%d", m.Disp)
|
||||
}
|
||||
if m.Base != nil {
|
||||
a += fmt.Sprintf("(%s)", m.Base.Asm())
|
||||
|
||||
@@ -37,7 +37,7 @@ func TestMemAsm(t *testing.T) {
|
||||
{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)"},
|
||||
{Mem{Symbol: Symbol{Name: "foo"}, Base: reg.StaticBase}, "foo(SB)"},
|
||||
{Mem{Symbol: Symbol{Name: "foo"}, Base: reg.StaticBase}, "foo+0(SB)"},
|
||||
{Mem{Symbol: Symbol{Name: "foo"}, Base: reg.StaticBase, Disp: 4}, "foo+4(SB)"},
|
||||
{Mem{Symbol: Symbol{Name: "foo"}, Base: reg.StaticBase, Disp: -7}, "foo-7(SB)"},
|
||||
{Mem{Symbol: Symbol{Name: "bar", Static: true}, Base: reg.StaticBase, Disp: 4, Index: reg.R11, Scale: 4}, "bar<>+4(SB)(R11*4)"},
|
||||
|
||||
Reference in New Issue
Block a user