当前位置: 首页 > 面试题库 >

如何从gcc中的C / C ++源获取汇编程序输出?

范宏大
2023-03-14
问题内容

如何做到这一点?

如果我想分析某些东西是如何编译的,我将如何获取发出的汇编代码?


问题答案:

使用该-S选项来gcc(或g ++)。

gcc -S helloworld.c

这将在helloworld.c上运行预处理器(cpp),执行初始编译,然后在运行汇编器之前停止。

默认情况下,这将输出一个文件helloworld.s。仍可以使用该-o选项设置输出文件。

gcc -S -o my_asm_output.s helloworld.c

当然,这只有在您拥有原始来源的情况下才有效。如果仅具有结果对象文件,则可以objdump通过设置--disassemble选项(或-d缩写形式)来使用。

objdump -S --disassemble helloworld > helloworld.dump

如果为目标文件启用了调试选项(-g在编译时)并且未剥离文件,则此选项最有效。

运行file helloworld将为您提供一些有关使用objdump获得的详细程度的指示。



 类似资料:
  • 12.2 C语言程序的汇编输出 在Turbo C++或Borland C++编程环境下,我们可TCC或BCC行命令把一个C语言的源程序转换成汇编语言的源程序。通过阅读汇编语言程序可以很准确地知道C语言语句的功能是如何实现的,这样,可为将来学习《编译原理》课程中的"寄存器调度"和"代码生成"等相关知识打下良好的基础。 C语言源程序转换的命令格式如下: TCC -S t1.cpp 或 BCC -S t

  • 我试图理解这个简单的C程序: 当它在汇编代码中时: 第三线和第四线发生了什么 为什么必须使用另外两个寄存器(edi和eax)来代替rsp DWORD PTR[rbp-4]实际发生了什么

  • 通过前面章节的学习我们知道,GCC 编译器并未提供给用户可用鼠标点击的界面窗口,要想调用 GCC 编译器编译 C 或者 C++ 程序,只能通过执行相应的 gcc 或者 g++ 指令。本节将重点给大家讲解如何编写 gcc 或者 g++ 指令来编译 C、C++ 程序。 注意,在前面的讲解中我们一直提到“编译”C、C++ 程序,其本意指的是将 C、C++ 代码转变为可执行程序(等同于 Windows 系

  • 本文向大家介绍C#程序获取C#中的文件名,包括了C#程序获取C#中的文件名的使用技巧和注意事项,需要的朋友参考一下 在字符串中设置路径名- 现在,使用GetFileName()方法获取文件名- 以下是完整的代码- 示例 输出结果

  • 我想研究一个文件的细节,我已经制作了一个 文件,当我 我得到一个 a.out 文件作为回报,该文件可以直接使用 . 和 会产生错误。 我想生成一个对象文件,其文件类型与的结果相同。我该怎么做? 我可能混淆了操作,导致错误的解释。不生成可执行文件,因此可执行文件是 CLANG 的结果。感谢所有回答者,很抱歉造成混乱,浪费了您的时间。

  • 问题内容: 现在,我已经在Windows 7上成功安装了Cython,我尝试使用Cython编译一些Cython代码,但是gcc使我的生活变得艰难。 使用gcc编译代码时,会抛出数十个 对 -erros的 未定义引用 ,并且我很确定src是可用的(如安装教程所述,如果缺少此文件,则会抛出 对 -errors的 未定义引用 )。 奇怪的是,使用*或-script可以很好地工作,但是当仍然在模块上工作