assembly - 如何获得一个简短的 Go 程序的汇编输出?

标签 assembly go

我用 Go 编写了这个程序:

package main

func add(a, b int) int {
    return a + b
}

func main () {
    add(1,2)
}

出于好奇,我想看看这个程序在汇编中的样子。

我发现了几种从 Go 程序输出汇编指令的方法,主要是:

go tool compile -S file.go > file.S

或者

go tool objdump executable > disassembly

但似乎这两者产生完全不同的输出。

如何打印出构成我的 Go 程序的人类可读的汇编指令?

最佳答案

这两者都为您提供了人类可读的汇编,只是 Go 工具链使用 Plan 9 汇编语法,这对于未经训练的人来说有点奇怪。使用 GNU binutils 中的 objdump 等工具来获得更熟悉的语法。

关于assembly - 如何获得一个简短的 Go 程序的汇编输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43858356/

相关文章:

汇编编码 strdup. Malloc 在共享库中调用

if-statement - MARIE assembly 如果-那么

汇编 (x86) : <label> db 'string' , 0 不会被执行,除非有跳转指令

linux - nasm,86_64,linux ,"hello world"程序。当链接时,它说 "relocation truncated to fit"

csv - 大型 CSV Go channel 内存过多

go - bigquery TIMESTAMP 字段的 Protobuf 类型

go - 如何从已实现的方法返回接口(interface)?

unit-testing - 在 go 中测试连接的正确方法

json - 在 Go 中,为什么我的 JSON 解码在这里不起作用?

macos - 使用 NASM 为 x86_64 环境编译 32 位程序集