互联网
类型
7.8
豆瓣评分
可以朗读
语音朗读
667千字
字数
2017-01-01
发行日期
展开全部
主编推荐语
围绕GCC编译过程,详细介绍从源代码到AST、从AST到GIMPLE、从GIMPLE到RTL,以及从RTL到最终的目标机器汇编代码的详细过程。
内容简介
本书结合GCC4.4.0源代码,内容涉及编译过程各个阶段中间表示的详细分析、生成过程,使读者在了解编译原理的基础上进一步掌握其实现的总体流程和实现细节,让更多的读者对编译技术不再只是停留在理论层面,而是学会如何实现一个编译系统实例。
目录
- 版权信息
- 前言
- 第1章 GCC概述
- 1.1 GCC的产生与发展
- 1.2 GCC的特点
- 1.3 GCC代码分析
- 第2章 GCC源代码分析工具
- 2.1 vim+ctags代码阅读工具
- 2.2 GNU gdb调试工具
- 2.3 GNU binutils工具
- 2.4 shell工具及graphviz绘图工具
- 2.5 GCC调试选项
- 第3章 GCC总体结构
- 3.1 GCC的目录结构
- 3.2 GCC的逻辑结构
- 3.3 GCC源代码编译
- 3.3.1 配置
- 3.3.2 编译
- 3.3.3 安装
- 第4章 从源代码到AST/GENERIC
- 4.1 抽象语法树
- 4.2 树节点的声明
- 4.3 树节点结构
- 4.3.1 struct tree_base
- 4.3.2 struct tree_common
- 4.3.3 常量节点
- 4.3.4 标识符节点
- 4.3.5 声明节点
- 4.3.6 struct tree_decl_minimal
- 4.3.7 struct tree_decl_common
- 4.3.8 struct tree_field_decl
- 4.3.9 struct tree_decl_with_rtl
- 4.3.10 struct tree_label_decl
- 4.3.11 struct tree_result_decl
- 4.3.12 struct tree_const_decl
- 4.3.13 struct tree_parm_decl
- 4.3.14 struct tree_decl_with_vis
- 4.3.15 struct tree_var_decl
- 4.3.16 struct tree_decl_non_common
- 4.3.17 struct tree_function_decl
- 4.3.18 struct tree_type_decl
- 4.3.19 类型节点
- 4.3.20 tree_list节点
- 4.3.21 表达式节点
- 4.3.22 语句节点
- 4.3.23 其他树节点
- 4.4 AST输出及图示
- 4.5 AST的生成
- 4.5.1 词法分析
- 4.5.2 词法分析过程
- 4.5.3 语法分析
- 4.5.4 语法分析过程
- 4.5.5 c_parse_file
- 4.5.6 c_parser_translation_unit
- 4.5.7 c_parser_external_declaration
- 4.5.8 c_parser_declaration_or_fndef
- 4.5.9 c_parser_declspecs
- 4.6 小结
- 第5章 从AST/GENERIC到GIMPLE
- 5.1 GIMPLE
- 5.2 GIMPLE语句
- 5.3 GIMPLE的表示与存储
- 5.4 GIMPLE语句的操作数
- 5.5 GIMPLE语句序列的基本操作
- 5.6 GIMPLE的生成
- 5.6.1 gimplify_function_tree
- 5.6.2 gimplify_body
- 5.6.3 gimlify_parameters
- 5.6.4 gimplify_stmt
- 5.6.5 gimplify_expr
- 5.7 GIMPLE转换实例
- 5.7.1 BIND_EXPR节点的GIMPLE生成
- 5.7.2 STATEMENT_LIST_EXPR节点的GIMPLE生成
- 5.7.3 MODIFY_EXPR节点的GIMPLE生成
- 5.7.4 POSTINCREMENT_EXPR节点的GIMPLE生成
- 5.8 实例分析
- 5.9 小结
- 第6章 GIMPLE处理及其优化
- 6.1 GCC Pass
- 6.1.1 核心数据结构
- 6.1.2 Pass的类型
- 6.1.3 Pass链的初始化
- 6.1.4 Pass的执行
- 6.2 Pass列表
- 6.3 GIMPLE Pass实例
- 6.3.1 pass_remove_useless_stmts
- 6.3.2 pass_lower_cf
- 6.3.3 pass_build_cfg
- 6.3.4 pass_build_cgraph_edges
- 6.3.5 pass_build_ssa
- 6.3.6 pass_all_optimizations
- 6.3.7 pass_expand
- 6.4 小结
- 第7章 RTL
- 7.1 RTL中的对象类型
- 7.2 RTX_CODE
- 7.3 RTX类型
- 7.4 RTX输出格式
- 7.5 RTX操作数
- 7.6 RTX的机器模式
- 7.7 RTX的存储
- 7.8 RTX表达式
- 7.8.1 常量
- 7.8.2 寄存器和内存
- 7.8.3 算术运算
- 7.8.4 比较运算
- 7.8.5 副作用
- 7.9 IR-RTL
- 7.9.1 INSN
- 7.9.2 JUMP_INSN
- 7.9.3 CALL_INSN
- 7.9.4 BARRIER
- 7.9.5 CODE_LABEL
- 7.9.6 NOTE
- 7.10 小结
- 第8章 机器描述文件${target}.md
- 8.1 机器描述文件
- 8.2 指令模板
- 8.2.1 模板名称
- 8.2.2 RTL模板
- 8.2.3 条件
- 8.2.4 输出模板
- 8.2.5 属性
- 8.3 定义RTL序列
- 8.4 指令拆分
- 8.5 枚举器
- 8.5.1 mode枚举器
- 8.5.2 code枚举器
- 8.6 窥孔优化
- 8.6.1 define_peephole
- 8.6.2 define_peephole2
- 8.7 小结
- 第9章 机器描述文件${target}.[ch]
- 9.1 targetm
- 9.1.1 struct gcc_target的定义
- 9.1.2 targetm的初始化
- 9.2 编译驱动及选项
- 9.2.1 编译选项
- 9.2.2 SPEC语言及SPEC文件
- 9.2.3 机器相关的编译选项
- 9.3 存储布局
- 9.3.1 位顺序和字节顺序
- 9.3.2 类型宽度
- 9.3.3 机器模式提升
- 9.3.4 存储对齐
- 9.3.5 编程语言中数据类型的存储布局
- 9.4 寄存器使用
- 9.4.1 寄存器的基本描述
- 9.4.2 寄存器分配顺序
- 9.4.3 机器模式
- 9.4.4 寄存器类型
- 9.5 堆栈及函数调用规范描述
- 9.5.1 堆栈的基本特性
- 9.5.2 寄存器消除
- 9.5.3 函数栈帧的管理
- 9.5.4 参数传递
- 9.5.5 函数返回值
- 9.5.6 i386机器栈帧
- 9.6 寻址方式
- 9.7 汇编代码分区
- 9.8 定义输出的汇编语言
- 9.8.1 汇编代码文件的框架
- 9.8.2 数据输出
- 9.8.3 未初始化数据输出
- 9.8.4 标签输出
- 9.8.5 指令输出
- 9.9 机器描述信息的提取
- 9.9.1 gencode.c
- 9.9.2 genattr.c
- 9.9.3 genattrtab.c
- 9.9.4 genrecog.c
- 9.9.5 genflag.c
- 9.9.6 genemit.c
- 9.9.7 genextract.c
- 9.9.8 genopinit.c
- 9.9.9 genoutput.c
- 9.9.10 genpreds.c
- 9.9.11 其他
- 9.10 小结
- 第10章 从GIMPLE到RTL
- 10.1 GIMPLE序列
- 10.2 典型数据结构
- 10.3 RTL生成的基本过程
- 10.3.1 变量展开
- 10.3.2 参数及返回值处理
- 10.3.3 初始块的处理
- 10.3.4 基本块的RTL生成
- 10.3.5 退出块的处理
- 10.3.6 其他处理
- 10.4 GIMPLE语句转换成RTL
- 10.4.1 GIMPLE语句转换的一般过程
- 10.4.2 GIMPLE_GOTO语句的RTL生成
- 10.4.3 GIMPLE_ASSIGN语句的RTL生成
- 10.5 小结
- 第11章 RTL处理及优化
- 11.1 RTL处理过程
- 11.2 特殊虚拟寄存器的实例化
- 11.3 指令调度
- 11.3.1 指令调度算法
- 11.3.2 GCC指令调度的实现
- 11.3.3 指令调度实例1
- 11.3.4 指令调度实例2
- 11.4 统一寄存器分配
- 11.4.1 基本术语
- 11.4.2 寄存器分配的主要流程
- 11.4.3 代码分析
- 11.4.4 寄存器分配实例1
- 11.4.5 寄存器分配实例2
- 11.5 汇编代码生成
- 11.5.1 汇编代码文件的结构
- 11.5.2 从RTL到汇编代码
- 11.6 小结
- 第12章 支持新的目标处理器
- 12.1 GCC移植
- 12.2 PAAG处理器
- 12.2.1 PAAG处理器指令集
- 12.2.2 应用二进制接口
- 12.3 GCC移植的基本步骤
- 12.4 PAAG机器描述文件(paag.md)
- 12.5 paag.[ch]文件
- 12.5.1 存储布局
- 12.5.2 寄存器使用规范
- 12.5.3 堆栈布局及堆栈指针
- 12.5.4 函数调用规范
- 12.5.5 寻址方式
- 12.5.6 汇编代码输出
- 12.5.7 杂项
- 12.6 PAAG后端注册
- 12.7 GCC移植测试
- 12.8 小结
- 参考文献
- 索引
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。