想知道是否有可能从叮当声中生成交错的源代码和程序集?我正在寻找与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++?
谢谢你的帮助。
萨朗
3条答案
按热度按时间liwlm1x91#
去年似乎有一个错误报告,确切地说:http://llvm.org/bugs/show_bug.cgi?id=16647
因此,由于它仍然是
NEW
,我猜clang还没有支持这个。作为一种替代方法,编译代码然后使用
objdump -S
怎么样?输出格式有点类似...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安装。hkmswyz63#
您可以使用以下命令从.cc/.cpp源文件生成汇编代码