我有兴趣检查标准 Go 编译器的 x86 汇编输出,看看我的代码是否真的被转换成相当有效的汇编代码;希望通过分析和检查程序集输出,我可以获得关于我应该在哪里/如何重写我的 Go 代码以获得最佳性能的线索。但是当我使用 -S 标志检查代码时,Go 吐出一团糟!我想要两件事:
有没有办法让 Go 编译器将程序集输出转储到文件中,而不仅仅是在终端上打印出来?
另外,有没有办法让 Go 编译器将汇编代码分离成带有标签的单独函数?我知道某些函数可能是内联的,因此不会出现在汇编代码中。我所看到的只是一个同质的组装 block ,几乎无法理解。
最佳答案
您可以将输出重定向到这样的文件:
go tool compile -S file.go > file.s
您可以使用 -N 禁用优化:
go tool compile -S -N file.go
或者,您可以使用 gccgo:
gccgo -S -O0 -masm=intel test.go
这将生成 test.s。您可以使用 -O0/1/2/3 来查看不同的优化。
关于go - 易于阅读的 Golang 汇编输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789951/