История изменений
Исправление beastie, (текущая версия) :
Погрешности измерения. Разворачиваются они всё таки в одно и тоже:
"".SwapXOR t=1 size=48 value=0 args=0x10 locals=0x0
0x0000 00000 (swap.go:3) TEXT "".SwapXOR+0(SB),4,$0-16
0x0000 00000 (swap.go:3) NOP ,
0x0000 00000 (swap.go:3) NOP ,
0x0000 00000 (swap.go:3) MOVQ "".b+16(FP),CX
0x0005 00005 (swap.go:3) MOVQ "".a+8(FP),AX
0x000a 00010 (swap.go:3) FUNCDATA $0,gclocals·e8c55b930b09fa5028b5e4b78b8932dc+0(SB)
0x000a 00010 (swap.go:3) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x000a 00010 (swap.go:4) NOP ,
0x000a 00010 (swap.go:4) MOVQ (AX),DX
0x000d 00013 (swap.go:4) NOP ,
0x000d 00013 (swap.go:4) NOP ,
0x000d 00013 (swap.go:4) MOVQ (CX),BP
0x0010 00016 (swap.go:4) XORQ DX,BP
0x0013 00019 (swap.go:4) MOVQ BP,(AX)
0x0016 00022 (swap.go:4) NOP ,
0x0016 00022 (swap.go:5) NOP ,
0x0016 00022 (swap.go:5) MOVQ (CX),DX
0x0019 00025 (swap.go:5) NOP ,
0x0019 00025 (swap.go:5) NOP ,
0x0019 00025 (swap.go:5) MOVQ (AX),BP
0x001c 00028 (swap.go:5) XORQ DX,BP
0x001f 00031 (swap.go:5) MOVQ BP,(CX)
0x0022 00034 (swap.go:5) NOP ,
0x0022 00034 (swap.go:6) NOP ,
0x0022 00034 (swap.go:6) MOVQ (AX),DX
0x0025 00037 (swap.go:6) NOP ,
0x0025 00037 (swap.go:6) NOP ,
0x0025 00037 (swap.go:6) MOVQ (CX),BP
0x0028 00040 (swap.go:6) XORQ DX,BP
0x002b 00043 (swap.go:6) MOVQ BP,(AX)
0x002e 00046 (swap.go:6) NOP ,
0x002e 00046 (swap.go:7) RET ,
"".SwapTmp t=1 size=32 value=0 args=0x10 locals=0x0
0x0000 00000 (swap.go:9) TEXT "".SwapTmp+0(SB),4,$0-16
0x0000 00000 (swap.go:9) NOP ,
0x0000 00000 (swap.go:9) NOP ,
0x0000 00000 (swap.go:9) MOVQ "".a+8(FP),DX
0x0005 00005 (swap.go:9) MOVQ "".b+16(FP),CX
0x000a 00010 (swap.go:9) FUNCDATA $0,gclocals·e8c55b930b09fa5028b5e4b78b8932dc+0(SB)
0x000a 00010 (swap.go:9) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x000a 00010 (swap.go:10) NOP ,
0x000a 00010 (swap.go:10) MOVQ (DX),AX
0x000d 00013 (swap.go:11) NOP ,
0x000d 00013 (swap.go:11) NOP ,
0x000d 00013 (swap.go:11) MOVQ (CX),R8
0x0010 00016 (swap.go:11) MOVQ R8,(DX)
0x0013 00019 (swap.go:12) NOP ,
0x0013 00019 (swap.go:12) MOVQ AX,(CX)
0x0016 00022 (swap.go:13) RET ,
"".SwapNative t=1 size=32 value=0 args=0x10 locals=0x0
0x0000 00000 (swap.go:15) TEXT "".SwapNative+0(SB),4,$0-16
0x0000 00000 (swap.go:15) NOP ,
0x0000 00000 (swap.go:15) NOP ,
0x0000 00000 (swap.go:15) MOVQ "".a+8(FP),DX
0x0005 00005 (swap.go:15) MOVQ "".b+16(FP),CX
0x000a 00010 (swap.go:15) FUNCDATA $0,gclocals·e8c55b930b09fa5028b5e4b78b8932dc+0(SB)
0x000a 00010 (swap.go:15) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x000a 00010 (swap.go:16) NOP ,
0x000a 00010 (swap.go:16) MOVQ (DX),AX
0x000d 00013 (swap.go:16) NOP ,
0x000d 00013 (swap.go:16) NOP ,
0x000d 00013 (swap.go:16) MOVQ (CX),R8
0x0010 00016 (swap.go:16) MOVQ R8,(DX)
0x0013 00019 (swap.go:16) NOP ,
0x0013 00019 (swap.go:16) MOVQ AX,(CX)
0x0016 00022 (swap.go:17) RET ,
Исходная версия beastie, :
Погрешности измерения. Разворачиваются они всё таки в одно и тоже:
"".SwapXOR t=1 size=48 value=0 args=0x10 locals=0x0
0x0000 00000 (swap.go:3) TEXT "".SwapXOR+0(SB),4,$0-16
0x0000 00000 (swap.go:3) NOP ,
0x0000 00000 (swap.go:3) NOP ,
0x0000 00000 (swap.go:3) MOVQ "".b+16(FP),CX
0x0005 00005 (swap.go:3) MOVQ "".a+8(FP),AX
0x000a 00010 (swap.go:3) FUNCDATA $0,gclocals·e8c55b930b09fa5028b5e4b78b8932dc+0(SB)
0x000a 00010 (swap.go:3) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x000a 00010 (swap.go:4) NOP ,
0x000a 00010 (swap.go:4) MOVQ (AX),DX
0x000d 00013 (swap.go:4) NOP ,
0x000d 00013 (swap.go:4) NOP ,
0x000d 00013 (swap.go:4) MOVQ (CX),BP
0x0010 00016 (swap.go:4) XORQ DX,BP
0x0013 00019 (swap.go:4) MOVQ BP,(AX)
0x0016 00022 (swap.go:4) NOP ,
0x0016 00022 (swap.go:5) NOP ,
0x0016 00022 (swap.go:5) MOVQ (CX),DX
0x0019 00025 (swap.go:5) NOP ,
0x0019 00025 (swap.go:5) NOP ,
0x0019 00025 (swap.go:5) MOVQ (AX),BP
0x001c 00028 (swap.go:5) XORQ DX,BP
0x001f 00031 (swap.go:5) MOVQ BP,(CX)
0x0022 00034 (swap.go:5) NOP ,
0x0022 00034 (swap.go:6) NOP ,
0x0022 00034 (swap.go:6) MOVQ (AX),DX
0x0025 00037 (swap.go:6) NOP ,
0x0025 00037 (swap.go:6) NOP ,
0x0025 00037 (swap.go:6) MOVQ (CX),BP
0x0028 00040 (swap.go:6) XORQ DX,BP
0x002b 00043 (swap.go:6) MOVQ BP,(AX)
0x002e 00046 (swap.go:6) NOP ,
0x002e 00046 (swap.go:7) RET ,
"".SwapTmp t=1 size=32 value=0 args=0x10 locals=0x0
0x0000 00000 (swap.go:9) TEXT "".SwapTmp+0(SB),4,$0-16
0x0000 00000 (swap.go:9) NOP ,
0x0000 00000 (swap.go:9) NOP ,
0x0000 00000 (swap.go:9) MOVQ "".a+8(FP),DX
0x0005 00005 (swap.go:9) MOVQ "".b+16(FP),CX
0x000a 00010 (swap.go:9) FUNCDATA $0,gclocals·e8c55b930b09fa5028b5e4b78b8932dc+0(SB)
0x000a 00010 (swap.go:9) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x000a 00010 (swap.go:10) NOP ,
0x000a 00010 (swap.go:10) MOVQ (DX),AX
0x000d 00013 (swap.go:11) NOP ,
0x000d 00013 (swap.go:11) NOP ,
0x000d 00013 (swap.go:11) MOVQ (CX),R8
0x0010 00016 (swap.go:11) MOVQ R8,(DX)
0x0013 00019 (swap.go:12) NOP ,
0x0013 00019 (swap.go:12) MOVQ AX,(CX)
0x0016 00022 (swap.go:13) RET ,
"".SwapNative t=1 size=32 value=0 args=0x10 locals=0x0
0x0000 00000 (swap.go:15) TEXT "".SwapNative+0(SB),4,$0-16
0x0000 00000 (swap.go:15) NOP ,
0x0000 00000 (swap.go:15) NOP ,
0x0000 00000 (swap.go:15) MOVQ "".a+8(FP),DX
0x0005 00005 (swap.go:15) MOVQ "".b+16(FP),CX
0x000a 00010 (swap.go:15) FUNCDATA $0,gclocals·e8c55b930b09fa5028b5e4b78b8932dc+0(SB)
0x000a 00010 (swap.go:15) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB)
0x000a 00010 (swap.go:16) NOP ,
0x000a 00010 (swap.go:16) MOVQ (DX),AX
0x000d 00013 (swap.go:16) NOP ,
0x000d 00013 (swap.go:16) NOP ,
0x000d 00013 (swap.go:16) MOVQ (CX),R8
0x0010 00016 (swap.go:16) MOVQ R8,(DX)
0x0013 00019 (swap.go:16) NOP ,