可变目标C编译器txt,chm,pdf,epub,mobi下载 作者:Christopher W. Fraser/David R. Hanson 出版社: 机械工业出版社 副标题: 设计与实现 原作名: A Retargetable C Compiler: Design and Implementation 译者:王挺 出版年: 2016-11 页数: 423 定价: 79.00元 装帧: 平装 丛书: 计算机科学丛书 ISBN: 9787111552581 内容简介 · · · · · ·本书系统地介绍了可变目标ANSI C编译器lcc的设计方法和实现技术。lcc是一个实用的编译器,能够为不同的目标机器(如MIPS R3000、SPARC、Intel 386及其后续产品)生成代码。本书结合lcc的具体实现,详细讲述了存储管理、符号表、词法分析、语法分析、中间代码生成、优化、目标代码产生等编译程序的各个部分。 本书特色鲜明,实用性强,适合作为高等院校计算机专业编译原理课程的教材或参考书,对从事编译相关工作的技术人员也有很好的参考价值。 作者简介 · · · · · ·本书的两位作者都具有深厚的教学和研究背景。Christopher W.Fraser从1975年起开妈研究编译技术,尤其对于从紧缩规范自动产生代码生成器这一技术有深入的研究,在该领域发表了多篇论文。他提出了可变目标的窥孔优化方法,该方法被广为流行的C编译器——GCC所采纳。从1997年到1986年,Fraser在亚利桑那大学从事计算机科学的教学工作。1986年以后,他在AT&T贝尔实验室主持计算技术的研究工作。David R.Hanson是普林斯顿大学计算机科学教授,具有20多年的程序语言的研究经验,主持了与贝尔实验到的合作研究,是Lcc的开发者之一。 目录 · · · · · ·出版者的话译者序 前言 第1章 引论 1 1.1 文本程序 1 1.2 如何使用本书 2 · · · · · ·() 出版者的话 译者序 前言 第1章 引论 1 1.1 文本程序 1 1.2 如何使用本书 2 1.3 概述 3 1.4 设计 7 1.5 公共声明 11 1.6 语法规范 13 1.7 错误 14 深入阅读 15 第2章 存储管理 16 2.1 内存管理接口 16 2.2 分配区的表示 17 2.3 空间分配 18 2.4 空间释放 20 2.5 字符串 20 深入阅读 23 练习 23 第3章 符号管理 26 3.1 符号的表示 27 3.2 符号表的表示 29 3.3 作用域的改变 32 3.4 查找和建立标识符 32 3.5 标号 33 3.6 常量 34 3.7 产生的变量 37 深入阅读 38 练习 38 第4章 类型 40 4.1 类型表示 40 4.2 类型管理 42 4.3 类型断言 45 4.4 类型构造器 46 4.5 函数类型 48 4.6 结构和枚举类型 49 4.7 类型检查函数 52 4.8 类型映射 56 深入阅读 56 练习 57 第5章 代码生成接口 59 5.1 类型度量 59 5.2 接口记录 60 5.3 符号 60 5.4 类型 61 5.5 dag操作 61 5.6 接口标志 65 5.7 初始化 67 5.8 定义 67 5.9 常量 69 5.10 函数 70 5.11 接口绑定 72 5.12 上行调用 73 深入阅读 75 练习 75 第6章 词法分析器 77 6.1 输入 77 6.2 单词的识别 81 6.3 关键字的识别 85 6.4 标识符的识别 86 6.5 数字的识别 87 6.6 字符常量和字符串的识别 92 深入阅读 95 练习 95 第7章 语法分析 97 7.1 语言和语法 97 7.2 二义性和分析树 98 7.3 自上而下的语法分析 100 7.4 FIRST和FOLLOW集合 102 7.5 编写分析函数 104 7.6 处理语法错误 106 深入阅读 110 练习 111 第8章 表达式 112 8.1 表达式的表示 112 8.2 表达式分析 115 8.3 C语言表达式的分析 117 8.4 赋值表达式 119 8.5 条件表达式 121 8.6 二元表达式 122 8.7 一元表达式和后缀表达式 124 8.8 基本表达式 127 深入阅读 130 练习 130 第9章 表达式语义 132 9.1 转换 132 9.2 一元操作符和后缀操作符 136 9.3 函数调用 141 9.4 二元操作符 147 9.5 赋值操作 150 9.6 条件操作 154 9.7 常量折叠 156 深入阅读 165 练习 165 第10章 语句 167 10.1 代码的表示 167 10.2 执行点 170 10.3 语句的识别 171 10.4 if语句 173 10.5 标号和goto语句 174 10.6 循环 176 10.7 switch语句 178 10.8 return语句 188 10.9 管理标号和跳转指令 191 深入阅读 194 练习 194 第11章 声明 196 11.1 转换单元 196 11.2 声明 197 11.3 声明符 206 11.4 函数声明符 210 11.5 结构说明符 215 11.6 函数定义 222 11.7 复合语句 229 11.8 结束处理 236 11.9 主程序 238 深入阅读 240 练习 241 第12章 中间代码的生成 243 12.1 消除公共子表达式 244 12.2 构建节点 248 12.3 控制流 250 12.4 赋值语句 256 12.5 函数调用 259 12.6 强制计算顺序 261 12.7 驱动代码生成 263 12.8 删除多次引用的节点 267 深入阅读 272 练习 273 第13章 构造代码生成器 275 13.1 代码生成器的组织 276 13.2 接口扩展 277 13.3 上行调用 279 13.4 节点扩展 280 13.5 符号扩展 282 13.6 帧的布局 284 13.7 生成块复制的代码 287 13.8 初始化 289 深入阅读 290 练习 290 第14章 选择和发送指令 291 14.1 规范 292 14.2 标记树 294 14.3 化简树 295 14.4 代价函数 302 14.5 调试 303 14.6 发送器 304 14.7 寄存器定位 309 14.8 指令选择的协调 313 14.9 共享规则 314 14.10 编写规范 315 深入阅读 316 练习 316 第15章 寄存器分配 318 15.1 组织结构 318 15.2 寄存器状态跟踪 319 15.3 寄存器分配 322 15.4 寄存器溢出 327 深入阅读 334 练习 334 第16章 MIPS R3000代码的生成 335 16.1 寄存器 336 16.2 指令的选取 339 16.3 函数的实现 349 16.4 数据的定义 355 16.5 块的复制 359 深入阅读 360 练习 360 第17章 SPARC代码的生成 362 17.1 寄存器 363 17.2 指令的选取 366 17.3 函数的实现 378 17.4 数据的定义 384 17.5 块的复制 386 深入阅读 387 练习 387 第18章 X86代码的生成 389 18.1 寄存器 390 18.2 指令的选取 394 18.3 函数的实现 407 18.4 数据的定义 409 深入阅读 412 练习 412 第19章 回顾 413 19.1 数据结构 413 19.2 接口 414 19.3 句法和语义分析 415 19.4 代码生成和优化 416 19.5 测试和验证 416 深入阅读 417 参考文献 419 · · · · · · () |
可能我道行比较浅,一时半会还真的无法消化
希望不会让我失望。
感觉学到了非常多的知识
买来学习