高级搜索  |  搜索帮助
最近的浏览历史
浏览此书的还浏览过
购买此书的人还购买过
书  名:自己动手写编译器、链接器
  • 作  者: 王博俊、张宇
  • 出版时间: 2015-02-01
  • 出 版 社: 清华大学出版社
  • 字  数: 557 千字
  • 印  次: 1-1
  • 印  张: 22.25
  • 开  本: 16开
  • ISBN: 9787302381365
  • 装  帧: 平装
  • 定  价:¥44.50
电子书价:¥31.20 折扣:70折 节省:¥13.30 vip价:¥31.20 电子书大小:20.98M
配套资源下载:
  • 名称
  • 说明
  • 权限
  • 文件大小
  • 点击图标下载
  • 图书样章
  • 所有用户
  • 256K
  • 图书课件
  • 教师
  • 5.72M
共有商品评论0条 查看评论摘要
内容简介
  本书讲述了一个真实编译器的开发过程,源语言是以C语言为蓝本,进行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intel x86机器语言。在本书中,读者将看到从SC语言定义,到SCC编译器开发的完整过程。本书介绍的SCC编译器,没有借助Lex与Yacc这些编译器自动生成工具,纯手工编写而成,更便于学习和理解。为了生成可以直接运行EXE文件,本书还实现了一个链接器。读完本书读者将知道一门全新的语言如何定义,一个真实的编译器、链接器如何编写。
本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校编译原理课程的实践教材。
郑重声明: 本书源代码作者已申请版权,仅供读者用于学习研究之目的。未经作者允许,严禁任何组织与个人将其在网络上传播或用于商业用途。对于侵权行为,作者保留提起法律诉讼的权利。源代码相关问题,请与作者联系。
前言
  
目录
第1章引言1
1.1HelloWorld编译过程分析1
1.1.1HelloWorld程序源文件1
1.1.2词法分析2
1.1.3语法分析3
1.1.4语义分析3
1.1.5链接器4
1.2SCC编译器简介7
1.2.1SCC编译器架构7
1.2.2SCC编译器开发环境7
1.2.3SCC编译器运行环境8
第2章文法知识10
2.1语言概述10
2.2形式语言11
2.2.1字母表和符号串11
2.2.2文法与语言的形式定义12
2.2.3文法与语言的类型13
2.2.4程序设计语言描述工具15
2.3词法分析方法16
2.3.1词法定义例举17
2.3.2状态转换图17
2.3.3词法分析程序流程图17
2.4语法分析方法18
2.4.1LL分析器18
2.4.2LL(k)文法19
2.4.3LL(1)文法19
2.4.4递归子程序法21
2.4.5文法的等价变换24目录自己动手写编译器、链接器第3章SC语言定义26
3.1SC语言的蓝本选择26
3.1.1KandR C26
3.1.2C8926
3.1.3C9927
3.2SC语言对C89简化原则27
3.3SC语言的字符集27
3.3.1基本字符集28
3.3.2扩展字符集28
3.4SC语言词法定义29
3.4.1关键字29
3.4.2标识符30
3.4.3整数常量31
3.4.4字符常量31
3.4.5字符串常量32
3.4.6运算符及分隔符32
3.4.7注释33
3.5SC语言语法定义33
3.5.1外部定义33
3.5.2语句35
3.5.3表达式39
3.6SC语言与C语言功能对比46
3.6.1关键字46
3.6.2数据类型46
3.6.3存储类型47
3.6.4常量47
3.6.5变量47
3.6.6函数48
3.6.7语句48
3.6.8表达式50
第4章SC语言词法分析52
4.1词法分析任务的官方说法52
4.2单词编码53
4.3词法分析用到的数据结构55
4.3.1动态字符串56
4.3.2动态数组58
4.3.3哈希表61
4.3.4单词表62
4.4错误处理,未雨绸缪67
4.5词法分析过程72
4.5.1词法分析主程序72
4.5.2预处理76
4.5.3解析标识符79
4.5.4解析整数80
4.5.5解析字符串80
4.5.6词法分析流程图82
4.6词法着色84
4.7控制程序85
4.8词法分析成果展示86
第5章SC语言语法分析87
5.1外部定义87
5.1.1翻译单元87
5.1.2外部声明88
5.1.3类型区分符90
5.1.4结构区分符92
5.1.5函数调用约定95
5.1.6结构成员对齐95
5.1.7声明符96
5.1.8初值符100
5.2语句101
5.2.1复合语句102
5.2.2表达式语句103
5.2.3选择语句104
5.2.4循环语句104
5.2.5跳转语句105
5.3表达式107
5.3.1赋值表达式108
5.3.2相等类表达式109
5.3.3关系表达式109
5.3.4加减类表达式110
5.3.5乘除类表达式111
5.3.6一元表达式112
5.3.7后缀表达式113
5.3.8初值表达式114
5.4语法缩进116
5.4.1用到的全局变量及枚举116
5.4.2语法缩进程序117
5.5总控程序118
5.6成果展示119
第6章符号表120
6.1符号表简介121
6.1.1收集符号属性121
6.1.2语义的合法性检查122
6.2符号表用到的主要数据结构123
6.2.1栈结构123
6.2.2符号表结构127
6.2.3数据类型结构132
6.2.4存储类型133
6.3符号表的构造过程134
6.3.1外部声明134
6.3.2类型区分符137
6.3.3结构区分符138
6.3.4声明符144
6.3.5变量初始化149
6.3.6复合语句150
6.3.7sizeof表达式150
6.3.8初等表达式152
6.4控制程序153
6.5成果展示155
第7章生成COFF目标文件157
7.1COFF文件结构157
7.1.1基本概念157
7.1.2总体结构158
7.1.3COFF文件头158
7.1.4节头表161
7.1.5代码节内容168
7.1.6数据节与导入节内容168
7.1.7COFF符号表169
7.1.8COFF字符串表173
7.1.9COFF重定位信息173
7.2生成COFF目标文件175
7.2.1生成节表176
7.2.2生成符号表178
7.2.3生成重定位信息182
7.2.4生成目标文件183
7.3成果展示185
第8章x86机器语言187
8.1x86机器语言简介187
8.2通用指令格式188
8.2.1指令前缀188
8.2.2操作码190
8.2.3ModR/M字节190
8.2.4SIB字节191
8.2.5偏移量与立即数193
8.3x86寄存器193
8.3.1数据寄存器193
8.3.2变址寄存器193
8.3.3指针寄存器194
8.3.4段寄存器194
8.3.5指令指针寄存器194
8.3.6标志寄存器195
8.4指令参考196
8.4.1符号说明196
8.4.2数据传送指令198
8.4.3算术运算指令200
8.4.4逻辑运算指令203
8.4.5控制转移指令205
8.4.6串操作指令208
8.4.7处理器控制指令208
8.5生成x86机器语言208
8.5.1操作数栈209
8.5.2生成通用指令210
8.5.3生成数据传送指令213
8.5.4生成算术与逻辑运算指令217
8.5.5生成控制转移指令221
8.5.6寄存器使用224
8.5.7本章用到的全局变量227
8.6成果展示227
第9章SCC语义分析229
9.1外部定义229
9.1.1声明与函数定义229
9.1.2初值符232
9.1.3函数体234
9.2语句237
9.2.1表达式语句237
9.2.2选择语句 238
9.2.3循环语句 239
9.2.4跳转语句241
9.3表达式 244
9.3.1赋值表达式244
9.3.2相等类表达式245
9.3.3关系表达式246
9.3.4加减类表达248
9.3.5乘除类表达式249
9.3.6一元表达式250
9.3.7后缀表达式253
9.3.8初值表达式257
9.4成果展示259
第10章链接器261
10.1链接方式与库文件261
10.2PE文件格式263
10.2.1总体结构263
10.2.2DOS部分264
10.2.3NT头265
10.2.4节头表272
10.2.5代码节272
10.2.6数据节274
10.2.7导入节274
10.3链接器代码实现278
10.3.1生成PE文件头278
10.3.2加载目标文件281
10.3.3加载引入库文件282
10.3.4解析外部符号285
10.3.5计算节区的RVA地址288
10.3.6重定位符号地址291
10.3.7修正需要重定位的地址292
10.3.8写PE文件293
10.3.9生成EXE文件295
10.4SCC编译器、链接器总控程序297
10.5成果展示301
10.6全书代码架构302
第11章SC语言程序开发304
11.1SC语言程序开发流程304
11.2SCC编译器测试程序304
11.2.1表达式测试304
11.2.2语句测试308
11.2.3结构体测试310
11.2.4函数参数传递测试312
11.2.5字符串测试314
11.2.6全局变量测试315
11.3语言举例316
11.3.1可接收命令行参数的控制台程序316
11.3.2可接收命令行参数的Win32应用程序317
11.3.3HelloWindows窗口程序318
11.3.4文件复制程序323
11.3.5九九乘法表325
11.3.6打印菱形326
11.3.7屏幕捕捉程序328
参考文献336
附录ASC语言文法定义中英文对照表337
Copyright(C)清华大学出版社有限公司,All Rights Reserved 京ICP备10035462号 联系我们