登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入 新註冊 | 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / EMS,時效:出貨後2-3日

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

2023年08月出版新書

2023年07月出版新書

2023年06月出版新書

2023年05月出版新書

2023年04月出版新書

2023年03月出版新書

2023年02月出版新書

『簡體書』可变目标C编译器:设计与实现

書城自編碼: 2922437
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]克里斯多夫 W.弗雷泽
國際書號(ISBN): 9787111552581
出版社: 机械工业出版社
出版日期: 2016-11-01
版次: 1 印次: 1
頁數/字數: 423/450000
書度/開本: 16开 釘裝: 平装

售價:NT$ 593

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
空腹力(诺贝尔奖得主研究成果!科学空腹,让身体脱胎换骨!)
《 空腹力(诺贝尔奖得主研究成果!科学空腹,让身体脱胎换骨!) 》

售價:NT$ 325.0
邓小平视察纪实
《 邓小平视察纪实 》

售價:NT$ 549.0
财商养成第一课
《 财商养成第一课 》

售價:NT$ 325.0
腐蚀工程手册(原著第三版)
《 腐蚀工程手册(原著第三版) 》

售價:NT$ 2229.0
神话的脉络:中国绘画中的传说建构
《 神话的脉络:中国绘画中的传说建构 》

售價:NT$ 437.0
锦奁曾叠:古代妆具之美
《 锦奁曾叠:古代妆具之美 》

售價:NT$ 717.0
盛世:西汉 康乾
《 盛世:西汉 康乾 》

售價:NT$ 549.0
所有治愈,都是自愈
《 所有治愈,都是自愈 》

售價:NT$ 381.0

建議一齊購買:

+

NT$ 396
《 编程风格:好代码的逻辑 》
+

NT$ 569
《 数学与泛型编程:高效编程的奥秘 》
+

NT$ 353
《 Lua设计与实现 》
+

NT$ 468
《 自己动手写Docker 》
+

NT$ 468
《 The Little Schemer:递归与函数式的奥妙 》
+

NT$ 497
《 ANTLR 4权威指南 》
內容簡介:
本书系统地介绍了可变目标ANSIC编译器lcc的设计方法和实现技术。lcc是一个实用的编译器,能够为不同的目标机器(如MIPSR3000、SPARC、Intel386及其后续产品)生成代码。本书结合lcc的具体实现,详细讲述了存储管理、符号表、词法分析、语法分析、中间代码生成、优化、目标代码产生等编译程序的各个部分。全书共分19章,各章之后均附有练习。本书特色鲜明,实用性强,适合作为高等院校计算机专业的编译原理课程的教材或参考书,对从事编译相关工作的技术人员也有很好的参考价值。
目錄
目录A Retargetable C Compiler: Design and Implementation出版者的话译者序前言第1章 引论11.1 文本程序11.2 如何使用本书21.3 概述31.4 设计71.5 公共声明111.6 语法规范131.7 错误14深入阅读15第2章 存储管理162.1 内存管理接口162.2 分配区的表示172.3 空间分配182.4 空间释放202.5 字符串20深入阅读23练习23第3章 符号管理263.1 符号的表示273.2 符号表的表示293.3 作用域的改变323.4 查找和建立标识符323.5 标号333.6 常量343.7 产生的变量37深入阅读38练习38第4章 类型404.1 类型表示404.2 类型管理424.3 类型断言454.4 类型构造器464.5 函数类型484.6 结构和枚举类型494.7 类型检查函数524.8 类型映射56深入阅读56练习57第5章 代码生成接口595.1 类型度量595.2 接口记录605.3 符号605.4 类型615.5 dag操作615.6 接口标志655.7 初始化675.8 定义675.9 常量695.10 函数705.11 接口绑定725.12 上行调用73深入阅读75练习75第6章 词法分析器776.1 输入776.2 单词的识别816.3 关键字的识别856.4 标识符的识别866.5 数字的识别876.6 字符常量和字符串的识别92深入阅读95练习95第7章 语法分析977.1 语言和语法977.2 二义性和分析树987.3 自上而下的语法分析1007.4 FIRST和FOLLOW集合1027.5 编写分析函数1047.6 处理语法错误106深入阅读110练习111第8章 表达式1128.1 表达式的表示1128.2 表达式分析1158.3 C语言表达式的分析1178.4 赋值表达式1198.5 条件表达式1218.6 二元表达式1228.7 一元表达式和后缀表达式1248.8 基本表达式127深入阅读130练习130第9章 表达式语义1329.1 转换1329.2 一元操作符和后缀操作符1369.3 函数调用1419.4 二元操作符1479.5 赋值操作1509.6 条件操作1549.7 常量折叠156深入阅读165练习165第10章 语句16710.1 代码的表示16710.2 执行点17010.3 语句的识别17110.4 if语句17310.5 标号和goto语句17410.6 循环17610.7 switch语句17810.8 return语句18810.9 管理标号和跳转指令191深入阅读194练习194第11章 声明19611.1 转换单元19611.2 声明19711.3 声明符20611.4 函数声明符21011.5 结构说明符21511.6 函数定义22211.7 复合语句22911.8 结束处理23611.9 主程序238深入阅读240练习241第12章 中间代码的生成24312.1 消除公共子表达式24412.2 构建节点24812.3 控制流25012.4 赋值语句25612.5 函数调用25912.6 强制计算顺序26112.7 驱动代码生成26312.8 删除多次引用的节点267深入阅读272练习273第13章 构造代码生成器27513.1 代码生成器的组织27613.2 接口扩展27713.3 上行调用27913.4 节点扩展28013.5 符号扩展28213.6 帧的布局28413.7 生成块复制的代码28713.8 初始化289深入阅读290练习290第14章 选择和发送指令29114.1 规范29214.2 标记树29414.3 化简树29514.4 代价函数30214.5 调试30314.6 发送器30414.7 寄存器定位30914.8 指令选择的协调31314.9 共享规则31414.10 编写规范315深入阅读316练习316第15章 寄存器分配31815.1 组织结构31815.2 寄存器状态跟踪31915.3 寄存器分配32215.4 寄存器溢出327深入阅读334练习334第16章 MIPS R3000代码的生成33516.1 寄存器33616.2 指令的选取33916.3 函数的实现34916.4 数据的定义35516.5 块的复制359深入阅读360练习360第17章 SPARC代码的生成36217.1 寄存器36317.2 指令的选取36617.3 函数的实现37817.4 数据的定义38417.5 块的复制386深入阅读387练习387第18章 X86代码的生成38918.1 寄存器39018.2 指令的选取39418.3 函数的实现40718.4 数据的定义409深入阅读412练习412第19章 回顾41319.1 数据结构41319.2 接口41419.3 句法和语义分析41519.4 代码生成和优化41619.5 测试和验证416深入阅读417参考文献419
內容試閱
前言A Retargetable C Compiler: Design and Implementation编译器是程序员使用的关键工具,程序员每天都在使用编译器,并且非常依赖于其正确性和可靠性。编译器必须接受程序语言的所有标准定义,以便源代码可以实现跨平台的可移植性。编译器必须生成高效的目标代码,但更重要的是,编译器必须生成正确的目标代码,只有可靠的编译器才能生成可靠的应用程序。编译器本身是一个大而复杂的应用程序,值得我们深入分析研究。本书介绍了ANSI C语言编译器lcc的大部分实现,对编译器的介绍方式与B. W. Kernighan和P. J. Plauger合著的《Software Tools》(Addison-Wesley,1976)一书对文本处理(例如文本编辑和宏处理)的介绍类似。研究实用的工具软件,是学习软件设计和实现技术的最好方法。本书在代码级详细介绍了一个实用的编译器,该编译器的完整源代码可在ftp.cs.princeton.edu(128.112.152.13)服务器的publcc目录下,通过匿名ftp服务得到。lcc不是一个研究系统,而是一个实用的编译器产品。从1988年开始,lcc就用于编译实际程序,现在每天都有数百名C程序员在使用它。由于本书详细分析了lcc编译器的设计与实现,因此用于介绍相关支撑材料的篇幅较少,仅展示了涉及的理论知识,而更为系统的编译技术的介绍可以参见其他教材。本书有意省略一些涉及琐碎和重复实现的语言特征,而将这部分内容作为练习。显然,本书将使读者对编译器的构造有更多的了解。然而只有少数程序员需要了解编译器的设计与实现,大多数程序员从事的是应用程序或其他系统程序的开发。但是,基于以下4个原因,大多数C程序员都可以从本书中受益。第一,一般来说,如果程序员能够理解C编译器的工作原理,通常可以成为较好的程序员,特别是较好的C程序员。编译器设计者必须全面准确地理解C语言的每一个特性,程序员通过学习这些特性的实现,能够更好地掌握语言本身及其在现代计算机上的高效实现。第二,大多数程序设计教材都是通过一些精简的示例来说明编程技巧的,但大多数程序员都是在从事大型程序的开发,在开发过程中需要不断修改程序,很少有带详细说明的示例可以作为大型程序设计的参考。lcc不是完美的,但是本书详细说明了该程序的优缺点,可以作为大型程序开发的参考。第三,编译器是计算机科学中理论与实践相结合的最好典范。lcc展示了理论与实践的相互作用及其精美的结果,展示了实践需求牵引理论的发展,这些都可以清楚地从代码中找到。通过一个真实的程序来研究这些相互作用,可以帮助程序员理解何时、何地以及如何运用不同的技术。此外,lcc也阐明了众多的C编程技术。第四,这本书本身是一个文本程序(literate program),如同D. E. Knuth所著的《TeX: The Program》(Addison-Wesley,1986)一样,本书包括lcc的源代码及说明。为了方便读者理解,本书并未按源程序的顺序对程序代码进行讲解,而是有意进行了调整。无论是对于在校学生还是专业技术人员,本书都非常适合自学使用。本书为lcc提供了说明完整的源代码,希望进行编译技术实践的人员,以及在需要使用或实现基于语言的工具和技术的应用领域(如用户接口)中工作的专业人员,将会对本书感兴趣。lcc的相关信息可通过以下地址获得:www.cs.princeton.edusoftwarelcc。本书全面而真实地展示了一个大型软件系统,可作为软件工程课程的分析实例。对于编译课程来说,本书弥补了传统编译教材的不足。本书介绍了C编译器的一种实现方法,而传统教材主要介绍编译过程中遇到的各种问题的解决算法,因此传统教材受篇幅限制只能介绍一些实验性的编译器,代码生成也通常面向较高的级别,以避免与具体的机器相关。因此,许多教师要求学生完成接近实际的编译器项目,使学生获得实践经验。通常,教师必须从头开始编写编译程序,而学生复制其中的大部分,修改后利用其余的部分。然而,由于编译器只是实验性的,文档往往显得不够充分,这种情形使教学双方都不满意。本书通过对一个实际编译器的大部分程序进行文档说明,并提供源代码,为教师提供了一种新的选择。本书介绍了完整的代码生成器,代码生成面向MIPS R3000、SPARC和Intel 386及其后续体系结构等不同的平台。本书利用了最新的研究成果,根据目标机器的紧缩规范(compact specification)生成代码生成器。这些方法使得我们能够针对多种机器展示完整的代码生成器,这是其他书籍无法做到的。通过介绍多个代码生成器,既避免了本书依赖于单一的机器,又有助于学生了解如何设计可变目标的软件。教师布置的作业可以是增加编译器接受的语言特征、优化、改变目标机器等。本书如果与传统教材配合使用,也可以要求学生使用不同的算法代替现有的模块作为实践作业。如果以实现一个实验编译器作为实践作业,则可能在低级基础结构和重复的语言特征上花费大量的时间。采取上述方法,就能够更接近实际的编译器工程实践。本书的许多练习都涉及编译器工程问题。除传统的编译目的外,lcc也有其他用途。例如,它可以用于构建一个C程序浏览器,或者根据

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.