将Go代码转换成汇编代码
2020-04-14 本文已影响0人
飞跑的蛤蟆
// mutil_assign.go
package main
func main() {
x, y := 1, 2
x, y = y + 3, x + 2
println(x, y)
}
先编译成可执行文件
go build mutil_assign.go
然后转化为汇编代码
go tool objdump -s "main\.main" mutil_assign
TEXT main.main(SB) /home/jesse/goProject/src/github.com/Jesse3692/golang_note/mutil_assign.go
mutil_assign.go:5 0x4525b0 64488b0c25f8ffffff MOVQ FS:0xfffffff8, CX
mutil_assign.go:5 0x4525b9 483b6110 CMPQ 0x10(CX), SP
mutil_assign.go:5 0x4525bd 7646 JBE 0x452605
mutil_assign.go:5 0x4525bf 4883ec10 SUBQ $0x10, SP
mutil_assign.go:5 0x4525c3 48896c2408 MOVQ BP, 0x8(SP)
mutil_assign.go:5 0x4525c8 488d6c2408 LEAQ 0x8(SP), BP
mutil_assign.go:9 0x4525cd e8fe30fdff CALL runtime.printlock(SB)
mutil_assign.go:9 0x4525d2 48c7042405000000 MOVQ $0x5, 0(SP)
mutil_assign.go:9 0x4525da e87138fdff CALL runtime.printint(SB)
mutil_assign.go:9 0x4525df e82c33fdff CALL runtime.printsp(SB)
mutil_assign.go:9 0x4525e4 48c7042403000000 MOVQ $0x3, 0(SP)
mutil_assign.go:9 0x4525ec e85f38fdff CALL runtime.printint(SB)
mutil_assign.go:9 0x4525f1 e86a33fdff CALL runtime.printnl(SB)
mutil_assign.go:9 0x4525f6 e85531fdff CALL runtime.printunlock(SB)
mutil_assign.go:10 0x4525fb 488b6c2408 MOVQ 0x8(SP), BP
mutil_assign.go:10 0x452600 4883c410 ADDQ $0x10, SP
mutil_assign.go:10 0x452604 c3 RET
mutil_assign.go:5 0x452605 e8f67affff CALL runtime.morestack_noctxt(SB)
mutil_assign.go:5 0x45260a eba4 JMP main.main(SB)