七、代码生成阶段

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 七、代码生成阶段,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

代码生成阶段的产物就是二进制目标文件(.o或者.obj文件)。

其实在前面的实例演示中,我们给编译器传递了-c的参数,最终他会生成一个二进制目标文件。其实,前面的语言分析、代码优化等都是伴随着代码生成进行的。语言分析没有问题,编译过程不会被打断,最终就会生成二进制目标文件。代码优化也是在代码生成阶段对代码进行优化。

        其实,学到现在我们终于明白了,编译的本质就是将一种基于ASCⅡ编写的文件(人们直接阅读的文本文件)转换成适合特定机器运行的二进制文件的过程。

使用objdump工具查看二进制目标文件

        现在可以明确的告诉大家,在二进制目标文件中(.o或者.obj文件)存放的就是针对我们机器(特定体系结构的处理器)的机器代码。这种机器代码是一种低级的语言,利用专门用于反汇编二进制的文件工具objdump,可以一种可阅读的格式让我们更多地了解二进制文件可能带有的附加信息。

我们现在把demo3.3.1.cpp转换成了demo3.3.1.o了。那么在终端(Windows的cmd)输入下列命令,就可以了解demo3.3.1.o带有的附加信息了。

D:\software\项目\Code>g++ -O3 -c demo3.3.1.cpp

七、代码生成阶段拥有汇编语言的功底才能阅读反汇编后的文件 

当然也可以输入下列命令,将屏幕输出重定向到一个指定的文本文件中,如demo3.3.1.txt,保存下来慢慢查看研究。

D:\software\项目\Code>objdump -D demo3.3.1.o >> demo3.3.1.txt

 七、代码生成阶段

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142700.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!