想要真正的理解一段代码到底是怎么执行的,还是要从汇编的层面去看,那怎么得到一段c++代码所对应的汇编代码呢,下面为你介绍三种方式。
1. gcc编译生成XXX.s文件
一般来讲,给你一个cpp文件,比如test.cpp,然后我们编译都是直接g++ test.cpp这样简单直接的方式,但其实它中间有很多个过程的,包含预处理、编译、链接等过程,而这其中的编译这个过程其实就是生成了汇编文件。
比如对于一个cpp文件,我们执行下列命令:
g++ -E test.cpp -o test.i #预处理过程
g++ -S test.i -o test.s #编译过程
这样生成test.s就是test.cpp所对应的汇编代码,当然我们也可以一步到位,直接使用g++ -S test.cpp -o test.s也是可以的。
2. 使用objdump命令得到汇编代码
linux下的objdump命令用于从可执行文件或者目标文件中显示某些信息,所以用它也可以得到可执行文件对应的汇编代码。
比如对于test.cpp,可以使用如下的命令得到汇编指令:
g++ test.cpp -o test
objdump -d test
通过这样的方式能看到可执行文件所对应的汇编指令。