购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5 分析编译器输出的工具

要想卓越编程,你要能够区分能干活但火候欠佳的代码序列和出色完成任务的代码序列。就我们的讨论而言,与平庸的代码序列相比,卓越代码序列应使用较少的指令、较短的机器周期或者占用较少的内存。倘若以汇编语言工作,我们只需要参考CPU生产厂商的数据手册和做一些试验,就能判断某些代码序列是否卓越。然而工作于高级语言时,需要以某种方式将程序中的高级语言语句映射到对应的机器码,才能评定这些语句的质量。

本章将探讨如下话题:

●查看和分析编译器的机器语言输出,从而利用其信息写出更好的高级语言代码

●让某些编译器输出人可阅读的汇编语言文件

●用dumpbin和objdump之类的工具分析二进制目标文件

●用反汇编器(或称为“反汇编程序”)检查编译器产生的机器码输出

●用调试器分析编译器的输出

●比对从同一高级语言源文件得到的两种不同汇编语言清单,确定哪个版本更好

为了判断编译器根据给定输入源文件生成的代码之质量,我们要掌握的主要技能之一就是,要学会分析编译器的输出。要分析编译器的输出,我们需要学习一些知识。为了分析编译器的输出,需要学会一些技能。首先是掌握足够的汇编语言编程知识,以便有效看懂编译器的输出 。其次就是要学会吩咐编译器(或其他工具)生成人可读的汇编语言输出。最后,还要学会汇编指令与高级语言代码的对照办法。第3章和第4章讲述了看懂某些基本汇编代码的方法。本章将讨论如何将汇编器的输出转换成人可读的形式。本书的其他部分则探讨汇编代码的分析,使我们能够通过选择高级语言语句来生成更好的机器代码。

我们先来了解一些编译器输出的背景知识,以及与优化相关的知识。 6R7gJd+xND2Zyq07NV5548rBTpc0fI0zydqcTEXFgfgGKGQ2pCV+2FmlFFoQm6Fy

点击中间区域
呼出菜单
上一章
目录
下一章
×