网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 深入分析GCC/源码分析系列 |
分类 | 计算机-软件工程 |
作者 | 王亚刚 编 |
出版社 | 机械工业出版社 |
下载 | ![]() |
简介 | 内容推荐 本书结合GCC4.4.0源代码,围绕GCC编译过程,详细介绍了GCC的设计框架和实现过程,包括从源代码到AST、从AST到GIMPLE、从GIMPLE到RTL,以及从RTL到终的目标机器代码的详细过程,涉及各个阶段中间表示的详细分析、生成过程,使读者在了解编译原理的基础上进一步掌握其实现的总体流程和实现细节,让更多的读者对编译技术不再只是停留在理论层面,而是学会如何实现一个编译系统实例。 目录 前言 第1章GCC概述1 1.1GCC的产生与发展1 1.2GCC的特点2 1.3GCC代码分析3 第2章GCC源代码分析工具4 2.1vim+ctags代码阅读工具4 2.2GNUgdb调试工具6 2.3GNUbinutils工具8 2.4shell工具及graphviz绘图工具11 2.5GCC调试选项13 第3章GCC总体结构16 3.1GCC的目录结构16 3.2GCC的逻辑结构18 3.3GCC源代码编译20 3.3.1配置21 3.3.2编译23 3.3.3安装25 第4章从源代码到AST/GENERIC26 4.1抽象语法树26 4.2树节点的声明28 4.3树节点结构33 4.3.1structtree_base35 4.3.2structtree_common36 4.3.3常量节点38 4.3.4标识符节点42 4.3.5声明节点44 4.3.6structtree_decl_minimal46 4.3.7structtree_decl_common46 4.3.8structtree_field_decl49 4.3.9structtree_decl_with_rtl55 4.3.10structtree_label_decl55 4.3.11structtree_result_decl56 4.3.12structtree_const_decl57 4.3.13structtree_parm_decl57 4.3.14structtree_decl_with_vis59 4.3.15structtree_var_decl59 4.3.16structtree_decl_non_common62 4.3.17structtree_function_decl62 4.3.18structtree_type_decl64 4.3.19类型节点67 4.3.20tree_list节点68 4.3.21表达式节点71 4.3.22语句节点73 4.3.23其他树节点75 4.4AST输出及图示76 4.5AST的生成83 4.5.1词法分析84 4.5.2词法分析过程90 4.5.3语法分析98 4.5.4语法分析过程99 4.5.5c_parse_file103 4.5.6c_parser_translation_unit105 4.5.7c_parser_external_declaration105 4.5.8c_parser_declaration_or_fndef107 4.5.9c_parser_declspecs112 4.6小结114 第5章从AST/GENERIC到GIMPLE115 5.1GIMPLE115 5.2GIMPLE语句119 5.3GIMPLE的表示与存储122 5.4GIMPLE语句的操作数128 5.5GIMPLE语句序列的基本操作132 5.6GIMPLE的生成135 5.6.1gimplify_function_tree136 5.6.2gimplify_body138 5.6.3gimlify_parameters139 5.6.4gimplify_stmt144 5.6.5gimplify_expr144 5.7GIMPLE转换实例157 5.7.1BIND_EXPR节点的GIMPLE生成158 5.7.2STATEMENT_LIST_EXPR节点的GIMPLE生成159 5.7.3MODIFY_EXPR节点的GIMPLE生成160 5.7.4POSTINCREMENT_EXPR节点的GIMPLE生成162 5.8实例分析172 5.9小结176 第6章GIMPLE处理及其优化177 6.1GCCPass177 6.1.1核心数据结构177 6.1.2Pass的类型179 6.1.3Pass链的初始化182 6.1.4Pass的执行184 6.2Pass列表187 6.3GIMPLEPass实例193 6.3.1pass_remove_useless_stmts193 6.3.2pass_lower_cf195 6.3.3pass_build_cfg197 6.3.4pass_build_cgraph_edges203 6.3.5pass_build_ssa205 6.3.6pass_all_optimizations206 6.3.7pass_expand207 6.4小结207 第7章RTL208 7.1RTL中的对象类型209 7.2RTX_CODE210 7.3RTX类型210 7.4RTX输出格式212 7.5RTX操作数213 7.6RTX的机器模式216 7.7RTX的存储219 7.8RTX表达式222 7.8.1常量225 7.8.2寄存器和内存227 7.8.3算术运算228 7.8.4比较运算230 7.8.5副作用230 7.9IR—RTL232 7.9.1INSN233 7.9.2JUMP_INSN234 7.9.3CALL_INSN235 7.9.4BARRIER235 7.9.5CODE_LABEL236 7.9.6NOTE237 7.10小结238 第8章机器描述文件${target}.md239 8.1机器描述文件240 8.2指令模板241 8.2.1模板名称242 8.2.2RTL模板246 8.2.3条件256 8.2.4输出模板256 8.2.5属性256 8.3定义RTL序列257 8.4指令拆分263 8.5枚举器266 8.5.1mode枚举器266 8.5.2code枚举器268 8.6窥孔优化269 8.6.1define_peephole269 8.6.2define_peephole2270 8.7小结271 第9章机器描述文件${target}.(ch)272 9.1targetm272 9.1.1structgcc_target的定义273 9.1.2targetm的初始化277 9.2编译驱动及选项279 9.2.1编译选项280 9.2.2SPEC语言及SPEC文件281 9.2.3机器相关的编译选项285 9.3存储布局286 9.3.1位顺序和字节顺序286 9.3.2类型宽度287 9.3.3机器模式提升287 9.3.4存储对齐288 9.3.5编程语言中数据类型的存储布局289 9.4寄存器使用290 9.4.1寄存器的基本描述290 9.4.2寄存器分配顺序297 9.4.3机器模式298 9.4.4寄存器类型300 9.5堆栈及函数调用规范描述307 9.5.1堆栈的基本特性309 9.5.2寄存器消除313 9.5.3函数栈帧的管理315 9.5.4参数传递316 9.5.5函数返回值318 9.5.6i386机器栈帧318 9.6寻址方式325 9.7汇编代码分区326 9.8定义输出的汇编语言333 9.8.1汇编代码文件的框架333 9.8.2数据输出336 9.8.3未初始化数据输出336 9.8.4标签输出338 9.8.5指令输出342 9.9机器描述信息的提取343 9.9.1gencode.c347 9.9.2genattr.c348 9.9.3genattrtab.c348 9.9.4genrecog.c349 9.9.5genflag.c352 9.9.6genemit.c353 9.9.7genextract.c354 9.9.8genopinit.c356 9.9.9genoutput.c360 9.9.10genpreds.c362 9.9.11其他363 9.10小结364 第10章从GIMPLE到RTL365 10.1GIMPLE序列365 10.2典型数据结构366 10.3RTL生成的基本过程367 10.3.1变量展开370 10.3.2参数及返回值处理380 10.3.3初始块的处理395 10.3.4基本块的RTL生成398 10.3.5退出块的处理410 10.3.6其他处理411 10.4GIMPLE语句转换成RTL411 10.4.1GIMPLE语句转换的一般过程412 10.4.2GIMPLE_GOTO语句的RTL生成415 10.4.3GIMPLE_ASSIGN语句的RTL生成417 10.5小结432 第11章RTL处理及优化433 11.1RTL处理过程433 11.2特殊虚拟寄存器的实例化435 11.3指令调度437 11.3.1指令调度算法439 11.3.2GCC指令调度的实现440 11.3.3指令调度实例1442 11.3.4指令调度实例2459 11.4统一寄存器分配460 11.4.1基本术语461 11.4.2寄存器分配的主要流程463 11.4.3代码分析466 11.4.4寄存器分配实例1468 11.4.5寄存器分配实例2483 11.5汇编代码生成494 11.5.1汇编代码文件的结构495 11.5.2从RTL到汇编代码499 11.6小结502 第12章支持新的目标处理器503 12.1GCC移植503 12.2PAAG处理器504 12.2.1PAAG处理器指令集505 12.2.2应用二进制接口505 12.3GCC移植的基本步骤506 12.4PAAG机器描述文件(paag.md)507 12.5paag.(ch)文件512 12.5.1存储布局512 12.5.2寄存器使用规范513 12.5.3堆栈布局及堆栈指针514 12.5.4函数调用规范515 12.5.5寻址方式519 12.5.6汇编代码输出521 12.5.7杂项523 12.6PAAG后端注册523 12.7GCC移植测试524 12.8小结526 参考文献527 索引529 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。