从 GCC 中的 C/C 源获取汇编器输出
要分析代码是如何编译的,检索发出的汇编代码是有益的。在 GCC 中,可以使用 -S 选项来实现。
gcc -S helloworld.c
这将调用预处理器和初始编译,但在运行汇编器之前停止。
为了获得更全面的汇编输出,考虑将 -fverbose-asm 与 -O0 一起使用。但是,请注意,这在默认优化级别下效果最好。
默认输出文件是 helloworld.s,但可以使用 -o 进行自定义。此外,-o - 可用于将输出直接定向到标准输出。
gcc -S -o my_asm_output.s helloworld.c
如果只有目标文件可用,则可以使用带有 --disassemble 选项的 objdump:
objdump -S --disassemble helloworld > helloworld.dump
这会将源代码行与反汇编输出交错。启用调试 (-g) 并避免剥离可以增强反汇编细节。
要进行更多自定义,请考虑诸如 -rwC(符号重定位)、-Mintel(Intel 语法)和 -r(对于带有占位符符号引用的目标文件)。
例如,以下命令使用 Intel 语法提供详细的转储:
objdump -drwC -Mintel -S foo.o | less
以上是GCC编译C/C源代码如何获得汇编代码输出?的详细内容。更多信息请关注PHP中文网其他相关文章!