gcc 金属声交错源和组件

uyhoqukh  于 2022-11-13  发布在  其他
关注(0)|答案(3)|浏览(115)

想知道是否有可能从叮当声中生成交错的源代码和程序集?我正在寻找与gcc命令等效的命令(如http://www.fclose.com/240/generate-a-mixed-source-and-assembly-listing-using-gcc/所示)

gcc -Wa,-adhln -g source_code.c > assembly_list.s

我访问过Link:How do you get assembler output from C/C++ source in gcc?,但它甚至列出了程序集-但没有交错。
此外,Visual Studio确实为您提供了非常好的交错程序集输出,详细信息如下:How to view the assembly behind the code using Visual C++?
谢谢你的帮助。
萨朗

liwlm1x9

liwlm1x91#

去年似乎有一个错误报告,确切地说:http://llvm.org/bugs/show_bug.cgi?id=16647

Bug 16647 - No option to produce mixed source + assembly listing?

因此,由于它仍然是NEW,我猜clang还没有支持这个。
作为一种替代方法,编译代码然后使用objdump -S怎么样?输出格式有点类似...

ghg1uchk

ghg1uchk2#

截至2016年8月,@dragosht提到的bug仍然存在,但是the linked bug 17465提供了一个解决方案:clang -no-integrated-as -Xassembler -adhln。它禁用集成了clang的汇编程序,并调用一个外部汇编程序,该程序有望支持列表生成选项。
这在Linux中可以正常工作,但在Mac OS X(截至10.11.6)中就不行了。问题是,即使是OS X中的外部汇编程序也不支持列表生成选项--您可以使用man as检查这一点。
objdump -S是一个在Linux中也能很好工作的替代方案,但是Mac OS X的objdump替代方案是otool,它提供反汇编,但不提供源代码交错。希望这很快就会改变,因为otool似乎要被淘汰了,而llvm会增长它自己的objdump。请参见man llvm-otool
最后,对于OSX来说,最好的选择似乎是使用binutils中的gobjdump -S。它可以用MacPorts或Brew安装。

hkmswyz6

hkmswyz63#

您可以使用以下命令从.cc/.cpp源文件生成汇编代码

clang++ -c -S test-function.cc

相关问题