更新时间:2019-01-04 15:49:54
封面
版权信息
前言
第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操作数