ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

golang 反汇编的命令

2021-03-24 14:02:11  阅读:302  来源: 互联网

标签:.. SP golang 命令 反汇编 go SB main MOVQ


main.go内容如下:

package main

import (
	"fmt"
)

func main() {
	fmt.Println("zzzzzzzzzzz")
}

可以使用以下的命令反汇编出来plan 9汇编指令的内容:

#以下两种命令都可以
go tool compile -S main.go


go build -gcflags -S main.go

windows平台与linux平台反汇编出来的汇编指令内容是一致的:

下面是windows系统的内容:

go tool compile -S main.go
"".main STEXT size=144 args=0x0 locals=0x58 funcid=0x0
        0x0000 00000 (main.go:7)        TEXT    "".main(SB), ABIInternal, $88-0
        0x0000 00000 (main.go:7)        MOVQ    TLS, CX
        0x0009 00009 (main.go:7)        PCDATA  $0, $-2
        0x0009 00009 (main.go:7)        MOVQ    (CX)(TLS*2), CX
        0x0010 00016 (main.go:7)        PCDATA  $0, $-1
        0x0010 00016 (main.go:7)        CMPQ    SP, 16(CX)
        0x0014 00020 (main.go:7)        PCDATA  $0, $-2
        0x0014 00020 (main.go:7)        JLS     134
        0x0016 00022 (main.go:7)        PCDATA  $0, $-1
        0x0016 00022 (main.go:7)        SUBQ    $88, SP
        0x001a 00026 (main.go:7)        MOVQ    BP, 80(SP)
        0x001f 00031 (main.go:7)        LEAQ    80(SP), BP
        0x0024 00036 (main.go:7)        FUNCDATA        $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
        0x0024 00036 (main.go:7)        FUNCDATA        $1, gclocals·f207267fbf96a0178e8758c6e3e0ce28(SB)
        0x0024 00036 (main.go:7)        FUNCDATA        $2, "".main.stkobj(SB)
        0x0024 00036 (main.go:8)        XORPS   X0, X0
        0x0027 00039 (main.go:8)        MOVUPS  X0, ""..autotmp_11+64(SP)
        0x002c 00044 (main.go:8)        LEAQ    type.string(SB), AX
        0x0033 00051 (main.go:8)        MOVQ    AX, ""..autotmp_11+64(SP)
        0x0038 00056 (main.go:8)        LEAQ    ""..stmp_0(SB), AX
        0x003f 00063 (main.go:8)        MOVQ    AX, ""..autotmp_11+72(SP)
        0x0044 00068 (<unknown line number>)    NOP

下面是linux系统的内容:

[root@localhost golang]# go tool compile -S main.go
"".main STEXT size=138 args=0x0 locals=0x58 funcid=0x0
        0x0000 00000 (main.go:9)        TEXT    "".main(SB), ABIInternal, $88-0
        0x0000 00000 (main.go:9)        MOVQ    (TLS), CX
        0x0009 00009 (main.go:9)        CMPQ    SP, 16(CX)
        0x000d 00013 (main.go:9)        PCDATA  $0, $-2
        0x000d 00013 (main.go:9)        JLS     128
        0x000f 00015 (main.go:9)        PCDATA  $0, $-1
        0x000f 00015 (main.go:9)        SUBQ    $88, SP
        0x0013 00019 (main.go:9)        MOVQ    BP, 80(SP)
        0x0018 00024 (main.go:9)        LEAQ    80(SP), BP
        0x001d 00029 (main.go:9)        FUNCDATA        $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)
        0x001d 00029 (main.go:9)        FUNCDATA        $1, gclocals·f207267fbf96a0178e8758c6e3e0ce28(SB)
        0x001d 00029 (main.go:9)        FUNCDATA        $2, "".main.stkobj(SB)
        0x001d 00029 (main.go:10)       XORPS   X0, X0
        0x0020 00032 (main.go:10)       MOVUPS  X0, ""..autotmp_11+64(SP)
        0x0025 00037 (main.go:10)       LEAQ    type.string(SB), AX
        0x002c 00044 (main.go:10)       MOVQ    AX, ""..autotmp_11+64(SP)
        0x0031 00049 (main.go:10)       LEAQ    ""..stmp_0(SB), AX
        0x0038 00056 (main.go:10)       MOVQ    AX, ""..autotmp_11+72(SP)
        0x003d 00061 (<unknown line number>)    NOP

有这个神器以后性能优化就更方便了。

标签:..,SP,golang,命令,反汇编,go,SB,main,MOVQ
来源: https://blog.csdn.net/kickmeout/article/details/115174809

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有