3549次浏览
本书涵盖了现代微处理器编译器的设计和实现方面的所有高级主题。本书首先介绍编译器的结构、符号表管理、中间代码结构、运行时支持等问题,探讨过程内的控制流分析、数据流分析、依赖关系分析和别名分析的各种方法,并介绍一系列的全局优化。接下来,讲述过程间的控制流分析、数据流分析和别名分析,以及程间优化和如何应用过程间信息来改善全局优化。然后,讨论有效利用层次存储系统的优化技术。最后,详细介绍4种商业化编译系统,以提供编译器结构、中间代码设计、优化策略和效果的专门例子。本书适合作为高等院校计算机专业研究生和高年级本科生的教材,也适合需要了解高级编译器设计和构造有关问题的计算机专业人员参考。出版者的话 专家指导委员会 译者序 序 前言 第1章 高级主题介绍 1 1.1 编译器结构回顾 1 1.2 基本问题中的高级论题 2 1.3 代码优化的重要性 4 1.4 优化编译器的结构 5 1.5 激进型优化编译器中各种优化的位置 7 1.6 本书各章的阅读流程 10 1.7 本书没有涉及的相关主题 10 1.8 例子中所用的目标机 11 1.9 数的表示与数据的大小 11 1.10 小结 11 1.11 进一
4567次浏览
全书共14章,第1章简要介绍了本书所基于的环境与工具;第2~6章针对编译的不同阶段,展开实践方面的相关阐述,并结合GCC和LLVM这两款具体的编译器进行论述;第7章介绍了多样化编译方面的实践;第8~13章从反编译的不同阶段介绍与反编译相关的可执行程序格式、程序解码和反汇编、中间表示生成、数据类型和控制流的恢复、过程定义恢复等内容;第14章简要介绍了反编译在信息安全方面的应用。前言 第1章 实践的环境与工具 1 1.1 实践环境概述 1 1.2 词法分析生成器LEX 1 1.3 语法分析生成器YACC 3 1.4 编译器GCC 4 1.5 编译器LLVM 5 1.6 反汇编工具IDA 6 1.7 反汇编工具OllyICE 6 1.8 仿真与分析工具QEMU 6 1.9 动态分析工具TEMU 7 1.10 本章小结 8 第2章 编译器实践概述 9 2.1 编译器、解释器及其工作方式 9 2.2 编译器的结构 10 2.3 编译器的设计与实现概述 12 2.3.1 利用Flex和Bison实现词法和语法分析 12 2.3.2 利用LLVM实现代码优化和代码生成 12 2.4 本章小结 13
6582次浏览
第1章的前半部分首先讲解程序的运行时结构。编译器正是将源代码转化为可执行程序并形成运行时结构的工具。对于只是想提高开发能力的程序员,这部分几乎起到了90%的作用。第1章的后半部分对整体的编译过程做了一个综述。当读者对整体有概念的时候,再去看每个章节的具体内容,会更容易理解。第2章用一个简单案例讲解词法分析,词法分析是把源文件文件中的内容读出并识别出符号的过程。第3章用词法分析的简单案例讲解语法分析,语法分析是在词法分析的结果中识别出语句的过程。第4章仍用前面的简单案例生成中间结构及目标代码。第5、6章用几个更为复杂的案例来分析语法及生成中间结构及目标代码的过程。至此,严格意义上的编译过程已经讲解完毕。为了让读者对可执行程序的*终生成有一个完整的了解,我们专门安排了讲解汇编器、链接器的内容,这就是第7章。第7章详细讲解如何将目标代码转变为可执行程序,包括文件格式、汇编器和链接器的内容。第8章讲预处理,从编译器的执行顺序来看,预处理器的执行是比较靠前的,之所以把预处理放在*后讲,是因为预处理比较独立,在读者已经了解整个编译过程中之后再讲解,会更容易理解。作者简介 前言 第1章运行时结构及编