查看C语言的汇编代码
查看C语言的汇编代码
GCC
GCC, the GNU Compiler Collection
The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,…). GCC was originally written as the compiler for the GNU operating system. The GNU system was developed to be 100% free software, free in the sense that it respects the user’s freedom.
选择GCC
MinGW: 编译目标仅兼容 32 位应用程序,最新的官方二进制版本为 GCC 9.2.0。
MinGW-w64: 衍生自 MinGW 的项目,编译目标兼容 32 位应用程序与64 位应用程序,最新的官方二进制版本为 GCC 8.1.0。(MingW-W64-builds)
TDM-GCC: 衍生自 MinGW 和 MinGW-w64 的项目,分为 32 位与 64 位两个版本,32 位版本的编译目标仅兼容 32 位应用程序,64位版本的编译目标兼容 32 位应用程序和 64 位应用程序,最新的官方二进制版本为 GCC 9.2.0。以上三个 GCC 编译器的 Windows 发行版均兼容 POSIX 线程标准 。(“pthread.h”)个人推荐优先选择 TDM-GCC 作为首选 C / C++ 编译器。
作者:砂漠的毒虫
链接:https://www.zhihu.com/question/39952667/answer/1133837727
来源:知乎
安装TDM-GCC
生成汇编
1 | |
这会使GCC运行编译器,产生一个汇编文件main.s,但是不做进一步的工作(通常情况下,它还会继续调用汇编器产生目标代码文件)。
展示程序的字节表示
1 | |
如果我们使用”-c”命令行选项,GCC会编译并汇编该代码,这样就会产生目标代码文件main.o,它是二进制格式的,所以无法直接查看。
要展示程序(main.c)的二进制目标代码,我们用反汇编器确定该过程的代码是14字节。然后,在文件main.o上运行GNU调试工具GDB。
要查看机器代码文件的内容,有一类称为反汇编器(disassembler)的程序非常有用。
1 | |
1 | |