江风网

txt_epub_Kindle_azw3_mobi_pdf电子书免费下载

深入分析GCC

作者: 王亚刚
出版时间: 2017-01-01
发布时间: 2020-11-06
阅读热度: 10
综合评分: 0
下载支持: TXT EPUB MOBI AZW3 PDF
在线阅读: 手机阅读 电脑阅读
《深入分析GCC》内容简介

本书将围绕GCC编译过程,详细介绍从源代码到AST、从AST到GIMPLE、从GIMPLE到RTL,以及从RTL到最终的目标机器汇编代码的详细过程,涉及各个阶段中间表示的详细分析、生成过程。本书提供了大量的图表和实例,展示了GCC编译系统的总体工作流程和工作细节。本书的另外一个特点是结合GCC 4.4.0的源代码进行分析,使读者在了解编译原理的基础上进一步掌握其实现的总体流程和细节,让更多读者对编译技术的认识不再只停留在理论层面,而是向其展示一个编译系统实例的实现过程。在编写这本书的时候,有一种精神支撑着我,我相信“兴趣”加上“坚持”就是胜利!分析GCC不是一年半载的事情,需要3年、5年,甚至更长时间,不过我可以坚持,我要用我的坚持换来对GCC的深入分析,让更多的GCC爱好者熟悉它、接触它、了解它,更多地参与GCC的开发与维护。

《深入分析GCC》章节目录
  • 前言
  • 第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.5 指令输出
  • 9.8.4 标签输出
  • 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 小结
  • 参考文献
  • 索引
版权免责声明
《深入分析GCC》为网络收集或网友自行上传,本站不对内容负责,《深入分析GCC》版权归原作者所有,仅供学习交流,请勿商业使用,本站不提供任何下载,储存服务,如无意侵犯了你对《深入分析GCC》的版权,请联系我们,我们将在第一时间删除相关内容!