main
init
package main import "fmt" func main() { fmt.Printf("greet!\n") }
>go tool compile -N -l Sample.go
>go tool objdump Sample.o
TEXT %22%22.main(SB) gofile..D:/home/admin/workstation/go/src/golearning/sample1/Sample.go
Sample.go:16 0x33a 648b0d14000000 MOVL FS:0x14, CX
Sample.go:16 0x341 8b8900000000 MOVL 0(CX), CX [2:6]R_TLS_LE
Sample.go:16 0x347 3b6108 CMPL 0x8(CX), SP
Sample.go:16 0x34a 7635 JBE 0x381
Sample.go:16 0x34c 83ec20 SUBL $0x20, SP
Sample.go:17 0x34f 8d0500000000 LEAL 0, AX [2:6]R_ADDR:go.string."greet!\n"
Sample.go:17 0x355 890424 MOVL AX, 0(SP)
Sample.go:17 0x358 c744240407000000 MOVL $0x7, 0x4(SP)
Sample.go:17 0x360 c744240800000000 MOVL $0x0, 0x8(SP)
Sample.go:17 0x368 c744240c00000000 MOVL $0x0, 0xc(SP)
Sample.go:17 0x370 c744241000000000 MOVL $0x0, 0x10(SP)
Sample.go:17 0x378 e800000000 CALL 0x37d [1:5]R_CALL:fmt.Printf
Sample.go:18 0x37d 83c420 ADDL $0x20, SP
Sample.go:18 0x380 c3 RET
Sample.go:16 0x381 e800000000 CALL 0x386 [1:5]R_CALL:runtime.morestack_noctxt
Sample.go:16 0x386 ebb2 JMP %22%22.main(SB)
TEXT %22%22.init(SB) gofile..<autogenerated>
gofile..<autogenerated>:1 0x3ae 648b0d14000000 MOVL FS:0x14, CX
gofile..<autogenerated>:1 0x3b5 8b8900000000 MOVL 0(CX), CX [2:6]R_TLS_LE
gofile..<autogenerated>:1 0x3bb 3b6108 CMPL 0x8(CX), SP
gofile..<autogenerated>:1 0x3be 7638 JBE 0x3f8
gofile..<autogenerated>:1 0x3c0 0fb60500000000 MOVZX 0, AX [3:7]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x3c7 80f801 CMPL $0x1, AL
gofile..<autogenerated>:1 0x3ca 7702 JA 0x3ce
gofile..<autogenerated>:1 0x3cc eb01 JMP 0x3cf
gofile..<autogenerated>:1 0x3ce c3 RET
gofile..<autogenerated>:1 0x3cf 0fb60500000000 MOVZX 0, AX [3:7]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x3d6 80f801 CMPL $0x1, AL
gofile..<autogenerated>:1 0x3d9 7402 JE 0x3dd
gofile..<autogenerated>:1 0x3db eb07 JMP 0x3e4
gofile..<autogenerated>:1 0x3dd e800000000 CALL 0x3e2 [1:5]R_CALL:runtime.throwinit
gofile..<autogenerated>:1 0x3e2 0f0b UD2
gofile..<autogenerated>:1 0x3e4 c6050000000001 MOVB $0x1, 0 [2:6]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x3eb e800000000 CALL 0x3f0 [1:5]R_CALL:fmt.init
gofile..<autogenerated>:1 0x3f0 c6050000000002 MOVB $0x2, 0 [2:6]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x3f7 c3 RET
gofile..<autogenerated>:1 0x3f8 e800000000 CALL 0x3fd [1:5]R_CALL:runtime.morestack_noctxt
gofile..<autogenerated>:1 0x3fd ebaf JMP %22%22.init(SB)
package main import "fmt" func init() { fmt.Printf("@author:", "adam") } func main() { fmt.Printf("greet!\n") }
>go tool compile -N -l Sample_with_init.go
>go tool objdump Sample_with_init.o
TEXT %22%22.init.0(SB) gofile..D:/home/admin/workstation/go/src/golearning/sample1/Sample_with_init.go
Sample_with_init.go:16 0x5be 648b0d14000000 MOVL FS:0x14, CX
Sample_with_init.go:16 0x5c5 8b8900000000 MOVL 0(CX), CX [2:6]R_TLS_LE
Sample_with_init.go:16 0x5cb 3b6108 CMPL 0x8(CX), SP
Sample_with_init.go:16 0x5ce 767b JBE 0x64b
Sample_with_init.go:16 0x5d0 83ec38 SUBL $0x38, SP
Sample_with_init.go:17 0x5d3 c744242400000000 MOVL $0x0, 0x24(SP)
Sample_with_init.go:17 0x5db c744242800000000 MOVL $0x0, 0x28(SP)
Sample_with_init.go:17 0x5e3 8d442424 LEAL 0x24(SP), AX
Sample_with_init.go:17 0x5e7 89442420 MOVL AX, 0x20(SP)
Sample_with_init.go:17 0x5eb 8400 TESTB AL, 0(AX)
Sample_with_init.go:17 0x5ed 8d0d00000000 LEAL 0, CX [2:6]R_ADDR:type.string
Sample_with_init.go:17 0x5f3 894c2424 MOVL CX, 0x24(SP)
Sample_with_init.go:17 0x5f7 8d0d00000000 LEAL 0, CX [2:6]R_ADDR:%22%22.statictmp_0
Sample_with_init.go:17 0x5fd 894c2428 MOVL CX, 0x28(SP)
Sample_with_init.go:17 0x601 8400 TESTB AL, 0(AX)
Sample_with_init.go:17 0x603 eb00 JMP 0x605
Sample_with_init.go:17 0x605 8944242c MOVL AX, 0x2c(SP)
Sample_with_init.go:17 0x609 c744243001000000 MOVL $0x1, 0x30(SP)
Sample_with_init.go:17 0x611 c744243401000000 MOVL $0x1, 0x34(SP)
Sample_with_init.go:17 0x619 8d0500000000 LEAL 0, AX [2:6]R_ADDR:go.string."@author:"
Sample_with_init.go:17 0x61f 890424 MOVL AX, 0(SP)
Sample_with_init.go:17 0x622 c744240408000000 MOVL $0x8, 0x4(SP)
Sample_with_init.go:17 0x62a 8b44242c MOVL 0x2c(SP), AX
Sample_with_init.go:17 0x62e 89442408 MOVL AX, 0x8(SP)
Sample_with_init.go:17 0x632 c744240c01000000 MOVL $0x1, 0xc(SP)
Sample_with_init.go:17 0x63a c744241001000000 MOVL $0x1, 0x10(SP)
Sample_with_init.go:17 0x642 e800000000 CALL 0x647 [1:5]R_CALL:fmt.Printf
Sample_with_init.go:18 0x647 83c438 ADDL $0x38, SP
Sample_with_init.go:18 0x64a c3 RET
Sample_with_init.go:16 0x64b e800000000 CALL 0x650 [1:5]R_CALL:runtime.morestack_noctxt
Sample_with_init.go:16 0x650 e969ffffff JMP %22%22.init.0(SB)
TEXT %22%22.main(SB) gofile..D:/home/admin/workstation/go/src/golearning/sample1/Sample_with_init.go
Sample_with_init.go:20 0x695 648b0d14000000 MOVL FS:0x14, CX
Sample_with_init.go:20 0x69c 8b8900000000 MOVL 0(CX), CX [2:6]R_TLS_LE
Sample_with_init.go:20 0x6a2 3b6108 CMPL 0x8(CX), SP
Sample_with_init.go:20 0x6a5 7635 JBE 0x6dc
Sample_with_init.go:20 0x6a7 83ec20 SUBL $0x20, SP
Sample_with_init.go:21 0x6aa 8d0500000000 LEAL 0, AX [2:6]R_ADDR:go.string."greet!\n"
Sample_with_init.go:21 0x6b0 890424 MOVL AX, 0(SP)
Sample_with_init.go:21 0x6b3 c744240407000000 MOVL $0x7, 0x4(SP)
Sample_with_init.go:21 0x6bb c744240800000000 MOVL $0x0, 0x8(SP)
Sample_with_init.go:21 0x6c3 c744240c00000000 MOVL $0x0, 0xc(SP)
Sample_with_init.go:21 0x6cb c744241000000000 MOVL $0x0, 0x10(SP)
Sample_with_init.go:21 0x6d3 e800000000 CALL 0x6d8 [1:5]R_CALL:fmt.Printf
Sample_with_init.go:22 0x6d8 83c420 ADDL $0x20, SP
Sample_with_init.go:22 0x6db c3 RET
Sample_with_init.go:20 0x6dc e800000000 CALL 0x6e1 [1:5]R_CALL:runtime.morestack_noctxt
Sample_with_init.go:20 0x6e1 ebb2 JMP %22%22.main(SB)
TEXT %22%22.init(SB) gofile..<autogenerated>
gofile..<autogenerated>:1 0x709 648b0d14000000 MOVL FS:0x14, CX
gofile..<autogenerated>:1 0x710 8b8900000000 MOVL 0(CX), CX [2:6]R_TLS_LE
gofile..<autogenerated>:1 0x716 3b6108 CMPL 0x8(CX), SP
gofile..<autogenerated>:1 0x719 763d JBE 0x758
gofile..<autogenerated>:1 0x71b 0fb60500000000 MOVZX 0, AX [3:7]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x722 80f801 CMPL $0x1, AL
gofile..<autogenerated>:1 0x725 7702 JA 0x729
gofile..<autogenerated>:1 0x727 eb01 JMP 0x72a
gofile..<autogenerated>:1 0x729 c3 RET
gofile..<autogenerated>:1 0x72a 0fb60500000000 MOVZX 0, AX [3:7]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x731 80f801 CMPL $0x1, AL
gofile..<autogenerated>:1 0x734 7402 JE 0x738
gofile..<autogenerated>:1 0x736 eb07 JMP 0x73f
gofile..<autogenerated>:1 0x738 e800000000 CALL 0x73d [1:5]R_CALL:runtime.throwinit
gofile..<autogenerated>:1 0x73d 0f0b UD2
gofile..<autogenerated>:1 0x73f c6050000000001 MOVB $0x1, 0 [2:6]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x746 e800000000 CALL 0x74b [1:5]R_CALL:fmt.init
gofile..<autogenerated>:1 0x74b e800000000 CALL 0x750 [1:5]R_CALL:%22%22.init.0
gofile..<autogenerated>:1 0x750 c6050000000002 MOVB $0x2, 0 [2:6]R_ADDR:%22%22.initdone·
gofile..<autogenerated>:1 0x757 c3 RET
gofile..<autogenerated>:1 0x758 e800000000 CALL 0x75d [1:5]R_CALL:runtime.morestack_noctxt
gofile..<autogenerated>:1 0x75d ebaa JMP %22%22.init(SB)
查看指定方法的反编译汇编代码
以上面的例子,查看main方法的汇编代码:
>go tool objdump -s main Sample.o
TEXT %22%22.main(SB) gofile..D:/home/admin/workstation/go/src/golearning/sample1/Sample.go
Sample.go:16 0x33a 648b0d14000000 MOVL FS:0x14, CX
Sample.go:16 0x341 8b8900000000 MOVL 0(CX), CX [2:6]R_TLS_LE
Sample.go:16 0x347 3b6108 CMPL 0x8(CX), SP
Sample.go:16 0x34a 7635 JBE 0x381
Sample.go:16 0x34c 83ec20 SUBL $0x20, SP
Sample.go:17 0x34f 8d0500000000 LEAL 0, AX [2:6]R_ADDR:go.string."greet!\n"
Sample.go:17 0x355 890424 MOVL AX, 0(SP)
Sample.go:17 0x358 c744240407000000 MOVL $0x7, 0x4(SP)
Sample.go:17 0x360 c744240800000000 MOVL $0x0, 0x8(SP)
Sample.go:17 0x368 c744240c00000000 MOVL $0x0, 0xc(SP)
Sample.go:17 0x370 c744241000000000 MOVL $0x0, 0x10(SP)
Sample.go:17 0x378 e800000000 CALL 0x37d [1:5]R_CALL:fmt.Printf
Sample.go:18 0x37d 83c420 ADDL $0x20, SP
Sample.go:18 0x380 c3 RET
Sample.go:16 0x381 e800000000 CALL 0x386 [1:5]R_CALL:runtime.morestack_noctxt
Sample.go:16 0x386 ebb2 JMP %22%22.main(SB)
相关推荐
在Golang生态系统中,`golang.org/x`是一个非常重要的包集合,它包含了大量由Go官方维护和贡献的扩展库。这些包覆盖了各种功能,从网络编程到文本处理,为Go开发者提供了丰富的工具和解决方案。`golang.org/x`包系列...
Golang,作为一种现代且高效的编程语言,因其强大的系统级编程能力和并发特性而受到广泛欢迎。在本文中,我们将深入探讨如何利用Golang实现这个功能,并了解相关的核心知识点。 首先,我们需要了解的是Golang的图形...
在本文中,我们将深入探讨如何配置Golang环境以及如何使用Golang对接Amazon S3对象存储。首先,让我们从安装Golang环境开始。 1. **安装Go环境** - **Windows**:在Windows操作系统上,你可以从Go的官方网站下载...
golang语言,window系统下安装go语言包安装包 在 Windows 系统下安装 Go 语言包,可以按照以下步骤进行: 下载 Go 语言包 在官网 https://golang.org/dl/ 中下载适合你系统的Go语言包,选择 .msi 安装包下载即可。 ...
标题中的"Pycharm Golang插件 jar"指的是在PyCharm这款流行的Python集成开发环境中安装Golang编程语言的扩展插件。PyCharm是由JetBrains公司开发的一款强大的IDE,它支持多种编程语言,包括Python、Go等。由于Golang...
Golang,由于其并发模型、内存管理以及高效的网络库,成为了构建此类系统的热门选择。本篇将深入探讨如何利用Golang实现一个高性能的IM单聊系统,特别关注UDP(用户数据报协议)在其中的作用和分发策略。 首先,...