• Rémy Oudompheng's avatar
    cmd/8l: fix misassembling of MOVB involving (AX)(BX*1) · 354a3a15
    Rémy Oudompheng authored
    The linker accepts MOVB involving non-byte-addressable
    registers, by generating XCHG instructions to AX or BX.
    It does not handle the case where nor AX nor BX are available.
    
    See also revision 1470920a2804.
    
    Assembling
        TEXT ·Truc(SB),7,$0
        MOVB BP, (BX)(AX*1)
        RET
    
    gives before:
       08048c60 <main.Truc>:
        8048c60:       87 dd         xchg   %ebx,%ebp
        8048c62:       88 1c 03      mov    %bl,(%ebx,%eax,1)
        8048c65:       87 dd         xchg   %ebx,%ebp
        8048c67:       c3            ret
    
    and after:
       08048c60 <main.Truc>:
        8048c60:       87 cd         xchg   %ecx,%ebp
        8048c62:       88 0c 03      mov    %cl,(%ebx,%eax,1)
        8048c65:       87 cd         xchg   %ecx,%ebp
        8048c67:       c3            ret
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/7226066
    354a3a15
Name
Last commit
Last update
..
5a Loading commit data...
5c Loading commit data...
5g Loading commit data...
5l Loading commit data...
6a Loading commit data...
6c Loading commit data...
6g Loading commit data...
6l Loading commit data...
8a Loading commit data...
8c Loading commit data...
8g Loading commit data...
8l Loading commit data...
addr2line Loading commit data...
api Loading commit data...
cc Loading commit data...
cgo Loading commit data...
cov Loading commit data...
dist Loading commit data...
fix Loading commit data...
gc Loading commit data...
go Loading commit data...
godoc Loading commit data...
gofmt Loading commit data...
ld Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
prof Loading commit data...
vet Loading commit data...
yacc Loading commit data...