如何做到这一点?
如果我想分析某些东西是如何编译的,我将如何获取发出的汇编代码?
使用该-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可以很好地工作,但是当仍然在模块上工作