自己动手写编译器、链接器pdf下载pdf下载

自己动手写编译器、链接器百度网盘pdf下载

作者:
简介:本篇主要提供自己动手写编译器、链接器pdf下载
出版社:
出版时间:2015-02
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

  《自己动手写编译器、链接器》展示了从语言定义,到进行词法分析、语法分析、语义分析的编译器完整开发过程。
  《自己动手写编译器、链接器》介绍的SCC编译器,没有借助Lex与Yacc编译器自动生成工具,纯手工编写而成,更便于学习和理解。
  为了使编译生成的成果可以直接运行,该书还实现了一个链接器,链接生成可以直接运行的EXE文件。
  编写编译器用到的知识之广是编写一般程序所无法比拟的,通过该书你将学到编译原理、数据结构与算法、Intel x86汇编语言、机器语言、目标文件格式、可执行文件格式等知识内容。
  从给微机编写BASIC语言编译器起家的比尔·盖茨,在世界首富宝座上稳坐多年,编写编译器的技术积淀究竟在他的成功中占多大份量,通过阅读该书,你会从技术层面上有所洞悉。
  有了编译器的编写经历,你将拿到一把学习任何计算机语言的万能钥匙,你会发现所有的计算机语言原来都是相通的,各种语言核心内容其实就是词法、语法、语义那么点事。
  如果你想了解各类计算机语言设计思路,编译器、链接器实现过程,该书将使你豁然开朗。

内容简介

  《自己动手写编译器、链接器》讲述了一个真实编译器的开发过程,源语言是以C语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intel x86机器语言。在本书中,读者将看到从SC语言定义,到SCC编译器开发的完整过程。本书介绍的SCC编译器,没有借助Lex与Yacc这些编译器自动生成工具,纯手工编写而成,更便于学习和理解。为了生成可以直接运行EXE文件,本书还实现了一个链接器。读完本书读者将知道一门全新的语言如何定义,一个真实的编译器、链接器如何编写。
  《自己动手写编译器、链接器》适合各类程序员、程序开发爱好者阅读,也可作为高等院校编译原理课程的实践教材。
  本书源代码可在清华大学出版社网站上下载。

内页插图

目录

第1章 引言
1.1 HelloWorld编译过程分析
1.1.1 HelloWorld程序源文件
1.1.2 词法分析
1.1.3 语法分析
1.1.4 语义分析
1.1.5 链接器
1.2 SCC编译器简介
1.2.1 SCC编译器架构
1.2.2 SCC编译器开发环境
1.2.3 SCC编译器运行环境

第2章 文法知识
2.1 语言概述
2.2 形式语言
2.2.1 字母表和符号串
2.2.2 文法与语言的形式定义
2.2.3 文法与语言的类型
2.2.4 程序设计语言描述工具
2.3 词法分析方法
2.3.1 词法定义例举
2.3.2 状态转换图
2.3.3 词法分析程序流程图
2.4 语法分析方法
2.4.1 LL分析器
2.4.2 LL(k)文法
2.4.3 LL(1)文法
2.4.4 递归子程序法
2.4.5 文法的等价变换

第3章 SC语言定义
3.1 SC语言的蓝本选择
3.1.1 K&-R C
3.1.2 C89
3.1.3 C99
3.2 SC语言对C89简化原则
3.3 SC语言的字符集
3.3.1 基本字符集
3.3.2 扩展字符集
3.4 SC语言词法定义
3.4.1 关键字
3.4.2 标识符
3.4.3 整数常量
3.4.4 字符常量
3.4.5 字符串常量
3.4.6 运算符及分隔符
3.4.7 注释
3.5 SC语言语法定义
3.5.1 外部定义
3.5.2 语句
3.5.3 表达式
3.6 SC语言与C语言功能对比
3.6.1 关键字
3.6.2 数据类型
3.6.3 存储类型
3.6.4 常量
3.6.5 变量
3.6.6 函数
3.6.7 语句
3.6.8 表达式

第4章 SC语言词法分析
4.1 词法分析任务的官方说法
4.2 单词编码
4.3 词法分析用到的数据结构
4.3.1 动态字符串
4.3.2 动态数组
4.3.3 哈希表
……
第5章 SC语言语法分析
第6章 符号表
第7章 生成COFF目标文件
第8章 x86机器语言
第9章 SCC语义分析
第10章 链接器
第11章 SC语言程序开发
参考文献
附录A SC语言文法定义中英文对照表

前言/序言

  因为工作的关系,我经常和各企业的技术负责人交流。话题谈着谈着常常会转到他们目前共同的难题——技术人员招聘。这时不少人都会感慨,中国能做系统软件开发的技术人员太少,这方面的人太难找了。随着中国企业的发展,做系统和平台的需求不断增加,这种供需矛盾将越来越明显。
  究其原因,很容易想到的是我们的高校教育、课程设置。美国顶尖大学计算机系基础课程教学里都非常重视项目实践,操作系统课往往要真的开发一个像模像样的操作系统原型,编译器课也真的要自己设计并实现一门有创新性的小语言……
  在计算机科学的各门课程中,编译器的设计实践有着特殊的重要性。“龙书”的主要作者、哥伦比亚大学教授Alfred V. Aho曾经列举过编译器实践有诸多好处:
  能让学生领悟到理论与实践的完美结合。比如编译原理所涵盖的正则表达式和自动机,在各种场合的应用是极其广泛的,对正则的掌握程度,从某种意义上讲甚至可以作为技术人员水平的一种尺度。
  深入探索计算思维的多样性。与人类语言一样,不同类型的编程语言其实代表了不同的思维方式。只用过命令式语言的人可能没有想到,开启了大数据领域的Map与Reduce,其实在函数式语言是一种非常常见的东西。
  的确,深入了解编译器和编译原理,对于技术人员更好地理解和掌握自己最常用的语言和系统,从而提升自己的内力是有极大好处的。另一方面,随着DSL(领域特定语言)的流行,需要技术人员开发自己语言的机会也越来越多。
  然而,编译原理是计算机科学里公认比较难的一门课。虽然目前国外比较重要的编译理论教材(比如龙书的《编译原理》、虎书《现代编译原理》的C语言和Java版本、鲸书《高级编译器设计与实现》)基本上都有了中文版和英文影印版,但这些书往往更偏重理论,而且门槛较高,不太适合指导一线技术人员实践和自学。我认识的一位美籍华人技术专家Ronald Mak在Wiley出版过一本基于Java的“Writing Compilers and Interpreters”,比较贴近实践,但部头较大,而且没有看到中文版。
  偶然的机会,我得知王博俊在工作之余,写了一本以简化的C语言为例子讲述编译器和链接器实践的书。浏览了初稿之后,感觉全书内容简明,容易上手,又不失全面和系统,正好弥补了这方面的空白。特向大家推荐。