首页 > 后端开发 > C++ > 如何使用 GCC 和 objdump 从 C/C 生成汇编代码?

如何使用 GCC 和 objdump 从 C/C 生成汇编代码?

Mary-Kate Olsen
发布: 2024-12-27 02:48:14
原创
541 人浏览过

How to Generate Assembly Code from C/C   using GCC and objdump?

如何在 GCC 中从 C/C 源输出汇编代码

在分析编译代码时,访问生成的汇编代码至关重要。在 GCC 中,可以使用“-S”选项来实现。

使用 -S 选项

默认情况下,“-S”在源文件,执行初始编译,但在调用汇编器之前停止。与“-fverbose-asm”结合使用,此选项将 C 代码与汇编代码作为注释关联起来,在优化级别 -O0 下特别有用。

gcc -S helloworld.c
登录后复制

自定义输出文件

输出文件通常以源文件命名,扩展名为 .s。要自定义输出文件的位置,请使用“-o”选项:

gcc -S -o my_asm_output.s helloworld.c
登录后复制

或者,您可以使用“-o -”输出到控制台:

gcc -S -o - helloworld.c | less
登录后复制

访问可执行对象的程序集

如果您没有原始源代码但有目标文件,使用 objdump 和“--disassemble”选项 (-d):

objdump -S --disassemble helloworld > helloworld.dump
登录后复制

在原始编译 (-g) 中启用调试,以通过源代码行引用增强反汇编输出。

其他 objdump 选项

考虑使用这些 objdump 选项以获取更多详细信息分析:

  • -rwC:符号重定位、禁用换行和解角度 C 名称
  • -Mintel:用于 x86 反汇编的 Intel 语法

For例如,以下命令提供丰富的反汇编输出:

objdump -drwC -Mintel -S foo.o | less
登录后复制

记住, “-r”对于在带有占位符的 .o 文件中显示符号引用至关重要。

以上是如何使用 GCC 和 objdump 从 C/C 生成汇编代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板