注重体验与质量的电子书资源下载网站
分类于: 编程语言 计算机基础
简介
C编译器剖析 - 邹昌伟 豆 0.0分
资源最后更新于 2020-09-04 14:47:25
作者:邹昌伟
出版社:清华大学出版社
出版日期:2016-01
ISBN:9787302426103
文件格式: pdf
标签: 编译原理 C compiler 编译器 编程语言 编程 程序设计 软件开发
简介· · · · · ·
“编译原理”课程是一门理论性与实践性非常强 的课程,应遵循从具体到抽象的认知规律。邹昌伟编 *的《C编译器剖析(高等学校计算机专业规划教材) 》以一个开源的C编译器(UCC)为案例,在源代码分析 的过程中,展开对编译原理相关知识的学习和讨论。
全书共分6章:**章介绍文法和递归等知识点,并采 用结合C语言学汇编的方式来讨论汇编代码;第2章讨 论UCC编译器的词法分析、内存管理、符号表管理和 类型系统等基本模块;第3章介绍UCC编译器的语法分 析,采用的是手工打造分析器的技术路线;第4章介 绍语义检查,通过本章的学习,有助于C程序员站在 编译器的角度来深入理解C语言的语义规则;第5章分 析UCC编译器的中间代码生成及优化;第6章介绍如何 生成32位的x86汇编代码。
本书不仅是很好的编译原理和编译器设计教材, 也可作为深人学习C程序设计的参考用书。
目录
第1章 基础知识
1.1 语言、文法与递归
1.2 一个较复杂的文法
1.3 由文法到分析器
1.3.1 表达式
1.3.2 声明
1.3.3 语句
1.4 UCC编译器预览
1.4.1 UCC的使用
1.4.2 UCC驱动器
1.5 结合C语言来学汇编
1.5.1 汇编语言简介
1.5.2 整数运算
1.5.3 浮点数的算术运算
1.5.4 浮点数之间的比较操作
1.5.5 指针、数组和结构体
1.6 C语言的变量名、数组名和函数名
1.7 C语言的变参函数
1.8 本章习题
第2章 UCC编译器的基本模块
2.1 从Makefile走起
2.2 词法分析
2.3 UCC编译器的内存管理
2.4 C语言的类型系统
2.5 UCC编译器的符号表管理
2.6 本章习题
第3章 语法分析
3.1 C语言的表达式
3.1.1 条件表达式和二元表达式
3.1.2 一元表达式、后缀表达式和基本表达式
3.2 C语言的语句
3.3 C语言的外部声明
3.3.1 声明和函数定义
3.3.2 与声明有关的几个非终结符
3.3.3 声明说明符和声明符
3.4 本章习题
第4章 语义检查
4.1 语义检查简介
4.2 表达式的语义检查
4.2.1 表达式的语义检查简介
4.2.2 数组索引的语义检查
4.2.3 基本表达式的语义检查
4.2.4 函数调用的语义检查
4.2.5 成员选择运算符的语义检查
4.2.6 相容类型
4.2.7 一元表达式的语义检查
4.2.8 二元表达式、赋值表达式和条件表达式的语义检查
4.3 语句的语义检查
4.4 声明的语义检查
4.4.1 类型结构的构建
4.4.2 结构体的类型结构
4.4.3 结构体和数组的初始化
4.4.4 内部连接和外部连接
4.4.5 外部声明的语义检查
4.5 本章习题
第5章 中间代码生成及优化
5.1 中间代码生成简介
5.2 表达式的翻译
5.2.1 布尔表达式的翻译
5.2.2 公共子表达式
5.2.3 通过“偏移”访问数组元素和结构体成员
5.2.4 后缀表达式的翻译
5.2.5 赋值表达式的翻译
5.2.6 一元表达式及其他表达式的翻译
5.3 语句的翻译
5.3.1 if语句和复合语句的翻译
5.3.2 switch语句的翻译
5.4 UCC编译器的优化
5.4.1 删除无用的临时变量和优化跳转目标
5.4.2 基本块的合并
5.5 本章习题
第6章 汇编代码生成
6.1 汇编代码生成简介
6.2 寄存器的管理
6.3 中间代码的翻译
6.3.1 由中间代码产生汇编指令的主要流程
6.3.2 为算术运算产生汇编代码
6.3.3 为跳转指令产生汇编代码
6.3.4 为函数调用与返回产生汇编代码
6.3.5 为类型转换产生汇编代码
6.3.6 为取地址产生汇编指令
6.4 本章习题
参考文献
后记
1.1 语言、文法与递归
1.2 一个较复杂的文法
1.3 由文法到分析器
1.3.1 表达式
1.3.2 声明
1.3.3 语句
1.4 UCC编译器预览
1.4.1 UCC的使用
1.4.2 UCC驱动器
1.5 结合C语言来学汇编
1.5.1 汇编语言简介
1.5.2 整数运算
1.5.3 浮点数的算术运算
1.5.4 浮点数之间的比较操作
1.5.5 指针、数组和结构体
1.6 C语言的变量名、数组名和函数名
1.7 C语言的变参函数
1.8 本章习题
第2章 UCC编译器的基本模块
2.1 从Makefile走起
2.2 词法分析
2.3 UCC编译器的内存管理
2.4 C语言的类型系统
2.5 UCC编译器的符号表管理
2.6 本章习题
第3章 语法分析
3.1 C语言的表达式
3.1.1 条件表达式和二元表达式
3.1.2 一元表达式、后缀表达式和基本表达式
3.2 C语言的语句
3.3 C语言的外部声明
3.3.1 声明和函数定义
3.3.2 与声明有关的几个非终结符
3.3.3 声明说明符和声明符
3.4 本章习题
第4章 语义检查
4.1 语义检查简介
4.2 表达式的语义检查
4.2.1 表达式的语义检查简介
4.2.2 数组索引的语义检查
4.2.3 基本表达式的语义检查
4.2.4 函数调用的语义检查
4.2.5 成员选择运算符的语义检查
4.2.6 相容类型
4.2.7 一元表达式的语义检查
4.2.8 二元表达式、赋值表达式和条件表达式的语义检查
4.3 语句的语义检查
4.4 声明的语义检查
4.4.1 类型结构的构建
4.4.2 结构体的类型结构
4.4.3 结构体和数组的初始化
4.4.4 内部连接和外部连接
4.4.5 外部声明的语义检查
4.5 本章习题
第5章 中间代码生成及优化
5.1 中间代码生成简介
5.2 表达式的翻译
5.2.1 布尔表达式的翻译
5.2.2 公共子表达式
5.2.3 通过“偏移”访问数组元素和结构体成员
5.2.4 后缀表达式的翻译
5.2.5 赋值表达式的翻译
5.2.6 一元表达式及其他表达式的翻译
5.3 语句的翻译
5.3.1 if语句和复合语句的翻译
5.3.2 switch语句的翻译
5.4 UCC编译器的优化
5.4.1 删除无用的临时变量和优化跳转目标
5.4.2 基本块的合并
5.5 本章习题
第6章 汇编代码生成
6.1 汇编代码生成简介
6.2 寄存器的管理
6.3 中间代码的翻译
6.3.1 由中间代码产生汇编指令的主要流程
6.3.2 为算术运算产生汇编代码
6.3.3 为跳转指令产生汇编代码
6.3.4 为函数调用与返回产生汇编代码
6.3.5 为类型转换产生汇编代码
6.3.6 为取地址产生汇编指令
6.4 本章习题
参考文献
后记