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实现这个功能,并了解相关的核心知识点。 首先,我们需要了解的是Golang的图形...
在本文中,我们将深入探讨如何配置Golang环境以及如何使用Golang对接Amazon S3对象存储。首先,让我们从安装Golang环境开始。 1. **安装Go环境** - **Windows**:在Windows操作系统上,你可以从Go的官方网站下载...
golang语言,window系统下安装go语言包安装包 在 Windows 系统下安装 Go 语言包,可以按照以下步骤进行: 下载 Go 语言包 在官网 https://golang.org/dl/ 中下载适合你系统的Go语言包,选择 .msi 安装包下载即可。 ...
在Golang生态系统中,`golang.org/x`是一个非常重要的包集合,它包含了大量由Go官方维护和贡献的扩展库。这些包覆盖了各种功能,从网络编程到文本处理,为Go开发者提供了丰富的工具和解决方案。`golang.org/x`包系列...
Golang,由于其并发模型、内存管理以及高效的网络库,成为了构建此类系统的热门选择。本篇将深入探讨如何利用Golang实现一个高性能的IM单聊系统,特别关注UDP(用户数据报协议)在其中的作用和分发策略。 首先,...
Python是时髦的机器学习御用开发语言,Golang是大红大紫的新时代后端开发语言。Python很适合让搞算法的写写模型,而Golang很适合提供API服务,两位同志都红的发紫,这里就介绍一下正确搅基的办法。 go 中的 cgo 模块...
Golang程序(可能就是goRtsp.exe)作为一个中间层,它接收RTSP流,对视频流进行处理(例如,转码、切片),然后提供一个Web友好的格式,如HLS,使Web前端可以轻松地通过AJAX或Fetch API请求并播放这些流。...
`golang.org/x` 是 Go 语言生态系统中的一个特殊仓库,包含了由 Go 语言官方维护但并未包含在标准库中的各种模块和工具。这个仓库包含了众多实用的第三方组件,如网络编程库、数据库驱动、文本处理工具等。由于 `...
Go语言,又称Golang,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它设计的目标是提高开发者的生产效率,同时保持系统级编程的性能。Go语言的设计受到了C、 Pascal、 Miranda和...
标题中的"Pycharm Golang插件 jar"指的是在PyCharm这款流行的Python集成开发环境中安装Golang编程语言的扩展插件。PyCharm是由JetBrains公司开发的一款强大的IDE,它支持多种编程语言,包括Python、Go等。由于Golang...
在Golang中,如果你想要实现音频播放功能,特别是在处理MP3文件时,可以利用外部库,比如BASS库。BASS是一个广泛使用的音频处理库,它提供了强大的音频播放、流处理和格式转换功能。在Golang中使用BASS库通常需要...
《Zinx:Golang构建MMO游戏服务器及客户端解析》 在现代网络游戏开发中,后端服务器扮演着至关重要的角色,它们负责处理玩家交互、游戏逻辑、数据存储等一系列任务。Zinx是一个用Golang编写的轻量级网络框架,特别...
【钉钉企业应用Demo(golang版)】是一个官方提供的示例项目,旨在帮助开发者了解如何使用Golang语言来构建钉钉企业微应用。这个Demo包含了完整的源代码,为二次开发提供了便利,使得开发者能够快速上手,理解并利用...
在本项目中,我们将探讨如何使用Golang(Go语言)来实现LoRa数据的发送与接收,并对收集到的数据进行处理。 首先,理解Golang的基础是必要的。Golang是一种静态类型、编译型、并发型、垃圾回收的编程语言,以其简洁...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C-like的编程语言。Go语言的设计目标是提高开发者的生产效率,同时保持程序运行的高效率和可移植性。在Windows平台上安装Go...
最近在学习Golang语言,中间遇到一个前辈指点,有一个学习原则:Learning By Doing。跟我之前学习Java的经验高度契合。在前一段时间学习洼坑中挣扎了好几天,差点就忘记这个重要的成功经验。 那么那什么来做练习呢...
在GOLANG中,解决这个问题需要对网络编程原理和GOLANG的网络库有深入理解。本文将详细介绍如何使用GOLANG来解决SOCKET通信中的粘包问题。 首先,理解粘包产生的原因。TCP协议是基于流的,没有明确的数据边界。它会...
国密加密解密 sm4 sm2 的java python golang实现,java和python,golang的有一定区别,需要修改点东西才可以实现。 SM4Key = ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 16)) ...
在`pycharm2018.3之golang插件`这个主题中,我们将探讨如何在PyCharm 2018.3版本上安装和配置Golang插件,以便在这款强大的Python IDE中编写和调试Go代码。 首先,我们需要了解为什么在PyCharm 2018.3这个特定版本...