clang交错源和汇编

时间:2014-07-07 06:02:34

标签: c++ visual-studio gcc assembly clang

想知道是否可以从clang生成交错的源和汇编? 我正在寻找与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++?

感谢您的帮助。

萨朗

2 个答案:

答案 0 :(得分:7)

去年有时会出现一个错误报告:http://llvm.org/bugs/show_bug.cgi?id=16647

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

因为它仍然是NEW我猜clang还没有支持这个。

作为替代方案,如何编译代码然后使用objdump -S?输出格式有点类似......

答案 1 :(得分:3)

截至2016年8月,@ dragosht提到的错误仍然是开放的。但是,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

最后,对于OS X,最好的选择似乎是使用来自binutils的gobjdump -S。它可以与MacPorts或brew一起安装。