成功加入购物车
王亚刚 作者 / 机械工业出版社 / 2017-02 / 平装
售价 ¥ 120.00
品相 全新
上书时间2024-05-12
深入分析GCC
本书结合GCC4.4.0源代码,围绕GCC编译过程,详细介绍了GCC的设计框架和实现过程,包括从源代码到AST、从AST到GIMPLE、从GIMPLE到RTL,以及从RTL到终的目标机器代码的详细过程,涉及各个阶段中间表示的详细分析、生成过程,使读者在了解编译原理的基础上进一步掌握其实现的总体流程和实现细节,让更多的读者对编译技术不再只是停留在理论层面,而是学会如何实现一个编译系统实例。
本书结合GCC-4.4.0源代码,围绕GCC编译过程,详细介绍了GCC的设计框架和实现过程,从源代码到AST、从AST到GIMPLE、从GIMPLE到RTL,以及从RTL到终的目标机器代码的详细过程,涉及到各个阶段中间表示的详细分析、生成过程,使读者在了解编译原理的基础上进一步掌握其实现的总体流程和实现细节,让更多的读者对编译技术不再仅仅停留在理论层面,而是能看到一个活生生编译系统实例的实现过程。
前言第1章GCC概述11.1GCC的产生与发展11.2GCC的特点21.3GCC代码分析3第2章GCC源代码分析工具42.1vim+ctags代码阅读工具42.2GNUgdb调试工具62.3GNUbinutils工具82.4shell工具及graphviz绘图工具112.5GCC调试选项13第3章GCC总体结构163.1GCC的目录结构163.2GCC的逻辑结构183.3GCC源代码编译203.3.1配置213.3.2编译233.3.3安装25第4章从源代码到AST/GENERIC264.1抽象语法树264.2树节点的声明284.3树节点结构334.3.1structtree_base354.3.2structtree_common364.3.3常量节点384.3.4标识符节点424.3.5声明节点444.3.6structtree_decl_minimal464.3.7structtree_decl_common464.3.8structtree_field_decl494.3.9structtree_decl_with_rtl554.3.10structtree_label_decl554.3.11structtree_result_decl564.3.12structtree_const_decl574.3.13structtree_parm_decl574.3.14structtree_decl_with_vis594.3.15structtree_var_decl594.3.16structtree_decl_non_common624.3.17structtree_function_decl624.3.18structtree_type_decl644.3.19类型节点674.3.20tree_list节点684.3.21表达式节点714.3.22语句节点734.3.23其他树节点754.4AST输出及图示764.5AST的生成834.5.1词法分析844.5.2词法分析过程904.5.3语法分析984.5.4语法分析过程994.5.5c_parse_file1034.5.6c_parser_translation_unit1054.5.7c_parser_external_declaration1054.5.8c_parser_declaration_or_fndef1074.5.9c_parser_declspecs1124.6小结114第5章从AST/GENERIC到GIMPLE1155.1GIMPLE1155.2GIMPLE语句1195.3GIMPLE的表示与存储1225.4GIMPLE语句的操作数1285.5GIMPLE语句序列的基本操作1325.6GIMPLE的生成1355.6.1gimplify_function_tree1365.6.2gimplify_body1385.6.3gimlify_parameters1395.6.4gimplify_stmt1445.6.5gimplify_expr1445.7GIMPLE转换实例1575.7.1BIND_EXPR节点的GIMPLE生成1585.7.2STATEMENT_LIST_EXPR节点的GIMPLE生成1595.7.3MODIFY_EXPR节点的GIMPLE生成1605.7.4POSTINCREMENT_EXPR节点的GIMPLE生成1625.8实例分析1725.9小结176第6章GIMPLE处理及其优化1776.1GCCPass1776.1.1核心数据结构1776.1.2Pass的类型1796.1.3Pass链的初始化1826.1.4Pass的执行1846.2Pass列表1876.3GIMPLEPass实例1936.3.1pass_remove_useless_stmts1936.3.2pass_lower_cf1956.3.3pass_build_cfg1976.3.4pass_build_cgraph_edges2036.3.5pass_build_ssa2056.3.6pass_all_optimizations2066.3.7pass_expand2076.4小结207第7章RTL2087.1RTL中的对象类型2097.2RTX_CODE2107.3RTX类型2107.4RTX输出格式2127.5RTX操作数2137.6RTX的机器模式2167.7RTX的存储2197.8RTX表达式2227.8.1常量2257.8.2寄存器和内存2277.8.3算术运算2287.8.4比较运算2307.8.5副作用2307.9IR—RTL2327.9.1INSN2337.9.2JUMP_INSN2347.9.3CALL_INSN2357.9.4BARRIER2357.9.5CODE_LABEL2367.9.6NOTE2377.10小结238第8章机器描述文件${target}.md2398.1机器描述文件2408.2指令模板2418.2.1模板名称2428.2.2RTL模板2468.2.3条件2568.2.4输出模板2568.2.5属性2568.3定义RTL序列2578.4指令拆分2638.5枚举器2668.5.1mode枚举器2668.5.2code枚举器2688.6窥孔优化2698.6.1define_peephole2698.6.2define_peephole22708.7小结271第9章机器描述文件${target}.(ch)2729.1targetm2729.1.1structgcc_target的定义2739.1.2targetm的初始化2779.2编译驱动及选项2799.2.1编译选项2809.2.2SPEC语言及SPEC文件2819.2.3机器相关的编译选项2859.3存储布局2869.3.1位顺序和字节顺序2869.3.2类型宽度2879.3.3机器模式提升2879.3.4存储对齐2889.3.5编程语言中数据类型的存储布局2899.4寄存器使用2909.4.1寄存器的基本描述2909.4.2寄存器分配顺序2979.4.3机器模式2989.4.4寄存器类型3009.5堆栈及函数调用规范描述3079.5.1堆栈的基本特性3099.5.2寄存器消除3139.5.3函数栈帧的管理3159.5.4参数传递3169.5.5函数返回值3189.5.6i386机器栈帧3189.6寻址方式3259.7汇编代码分区3269.8定义输出的汇编语言3339.8.1汇编代码文件的框架3339.8.2数据输出3369.8.3未初始化数据输出3369.8.4标签输出3389.8.5指令输出3429.9机器描述信息的提取3439.9.1gencode.c3479.9.2genattr.c3489.9.3genattrtab.c3489.9.4genrecog.c3499.9.5genflag.c3529.9.6genemit.c3539.9.7genextract.c3549.9.8genopinit.c3569.9.9genoutput.c3609.9.10genpreds.c3629.9.11其他3639.10小结364第10章从GIMPLE到RTL36510.1GIMPLE序列36510.2典型数据结构36610.3RTL生成的基本过程36710.3.1变量展开37010.3.2参数及返回值处理38010.3.3初始块的处理39510.3.4基本块的RTL生成39810.3.5退出块的处理41010.3.6其他处理41110.4GIMPLE语句转换成RTL41110.4.1GIMPLE语句转换的一般过程41210.4.2GIMPLE_GOTO语句的RTL生成41510.4.3GIMPLE_ASSIGN语句的RTL生成41710.5小结432第11章RTL处理及优化43311.1RTL处理过程43311.2特殊虚拟寄存器的实例化43511.3指令调度43711.3.1指令调度算法43911.3.2GCC指令调度的实现44011.3.3指令调度实例144211.3.4指令调度实例245911.4统一寄存器分配46011.4.1基本术语46111.4.2寄存器分配的主要流程46311.4.3代码分析46611.4.4寄存器分配实例146811.4.5寄存器分配实例248311.5汇编代码生成49411.5.1汇编代码文件的结构49511.5.2从RTL到汇编代码49911.6小结502第12章支持新的目标处理器50312.1GCC移植50312.2PAAG处理器50412.2.1PAAG处理器指令集50512.2.2应用二进制接口50512.3GCC移植的基本步骤50612.4PAAG机器描述文件(paag.md)50712.5paag.(ch)文件51212.5.1存储布局51212.5.2寄存器使用规范51312.5.3堆栈布局及堆栈指针51412.5.4函数调用规范51512.5.5寻址方式51912.5.6汇编代码输出52112.5.7杂项52312.6PAAG后端注册52312.7GCC移植测试52412.8小结526参考文献527索引529
展开全部
图2
图3
配送说明
...
相似商品
为你推荐
开播时间:09月02日 10:30