思维导图备注

深入分析GCC
首页 收藏书籍 阅读记录
  • 书签 我的书签
  • 添加书签 添加书签 移除书签 移除书签

第3章 GCC总体结构

浏览 1 扫码
  • 小字体
  • 中字体
  • 大字体
2022-01-25 02:20:18
请 登录 再阅读
上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 前言
  • 第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.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.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.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.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.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.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.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》电子书下载

    请下载您需要的格式的电子书,随时随地,享受学习的乐趣!
    EPUB 电子书

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度