Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

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


分享到:
时间:2022-11-20 10:50来源:http://www.java1234.com 作者:转载  侵权举报
本书讲述了一个真实编译器的发过程,源语言是以C语言为蓝本,行适当简化定义的一门新语言,称之为SC语言(简化的C语言),目标语言是大家熟悉的Intel x86机器语言。在本书中,读者
失效链接处理
自己动手写编译器、链接器 PDF 下载


下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版

用户下载说明:

电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://e.dangdang.com/products/1900452741.html
 

相关截图:



资料简介:
本书讲述了一个真实编译器的发过程,源语言是以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 哈希表
 
4.3.4 单词表
 
4.4 错误处理,未雨绸缪
 
4.5 词法分析过程
 
4.5.1 词法分析主程序
 
4.5.2 预处理
 
4.5.3 解析标识符
 
4.5.4 解析整数
 
4.5.5 解析字符串
 
4.5.6 词法分析流程图
 
4.6 词法着色
 
4.7 控制程序
 
4.8 词法分析成果展示
 
第5章 SC语言语法分析
 
5.1 外部定义
 
5.1.1 翻译单元
 
5.1.2 外部声明
 
5.1.3 类型区分符
 
5.1.4 结构区分符
 
5.1.5 函数调用约定
 
5.1.6 结构成员对齐
 
5.1.7 声明符
 
5.1.8 初值符
 
5.2 语句
 
5.2.1 复合语句
 
5.2.2 表达式语句
 
5.2.3 选择语句
 
5.2.4 循环语句
 
5.2.5 跳转语句
 
5.3 表达式
 
5.3.1 赋值表达式
 
5.3.2 相等类表达式
 
5.3.3 关系表达式
 
5.3.4 加减类表达式
 
5.3.5 乘除类表达式
 
5.3.6 一元表达式
 
5.3.7 后缀表达式
 
5.3.8 初值表达式
 
5.4 语法缩进
 
5.4.1 用到的全局变量及枚举
 
5.4.2 语法缩进程序
 
5.5 总控程序
 
5.6 成果展示
 
第6章 符号表
 
6.1 符号表简介
 
6.1.1 收集符号属性
 
6.1.2 语义的合法性检查
 
6.2 符号表用到的主要数据结构
 
6.2.1 栈结构
 
6.2.2 符号表结构
 
6.2.3 数据类型结构
 
6.2.4 存储类型
 
6.3 符号表的构造过程
 
6.3.1 外部声明
 
6.3.2 类型区分符
 
6.3.3 结构区分符
 
6.3.4 声明符
 
6.3.5 变量初始化
 
6.3.6 复合语句
 
6.3.7 sizeof表达式
 
6.3.8 初等表达式
 
6.4 控制程序
 
6.5 成果展示
 
第7章 生成COFF目标文件
 
7.1 COFF文件结构
 
7.1.1 基本概念
 
7.1.2 总体结构
 
7.1.3 COFF文件头
 
7.1.4 节头表
 
7.1.5 代码节内容
 
7.1.6 数据节与导入节内容
 
7.1.7 COFF符号表
 
7.1.8 COFF字符串表
 
7.1.9 COFF重定位信息
 
7.2 生成COFF目标文件
 
7.2.1 生成节表
 
7.2.2 生成符号表
 
7.2.3 生成重定位信息
 
7.2.4 生成目标文件
 
7.3 成果展示
 
第8章 x86机器语言
 
8.1 x86机器语言简介
 
8.2 通用指令格式
 
8.2.1 指令前缀
 
8.2.2 操作码
 
8.2.3 ModR/M字节
 
8.2.4 SIB字节
 
8.2.5 偏移量与立即数
 
8.3 x86寄存器
 
8.3.1 数据寄存器
 
8.3.2 变址寄存器
 
8.3.3 指针寄存器
 
8.3.4 段寄存器
 
8.3.5 指令指针寄存器
 
8.3.6 标志寄存器
 
8.4 指令参考
 
8.4.1 符号说明
 
8.4.2 数据传送指令
 
8.4.3 算术运算指令
 
8.4.4 逻辑运算指令
 
8.4.5 控制转移指令
 
8.4.6 串操作指令
 
8.4.7 处理器控制指令
 
8.5 生成x86机器语言
 
8.5.1 操作数栈
 
8.5.2 生成通用指令
 
8.5.3 生成数据传送指令
 
8.5.4 生成算术与逻辑运算指令
 
8.5.5 生成控制转移指令
 
8.5.6 寄存器使用
 
8.5.7 本章用到的全局变量
 
8.6 成果展示
 
第9章 SCC语义分析
 
9.1 外部定义
 
9.1.1 声明与函数定义
 
9.1.2 初值符
 
9.1.3 函数体
 
9.2 语句
 
9.2.1 表达式语句
 
9.2.2 选择语句
 
9.2.3 循环语句
 
9.2.4 跳转语句
 
9.3 表达式
 
9.3.1 赋值表达式
 
9.3.2 相等类表达式
 
9.3.3 关系表达式
 
9.3.4 加减类表达
 
9.3.5 乘除类表达式
 
9.3.6 一元表达式
 
9.3.7 后缀表达式
 
9.3.8 初值表达式
 
9.4 成果展示
 
第10章 链接器
 
10.1 链接方式与库文件
 
10.2 PE文件格式
 
10.2.1 总体结构
 
10.2.2 DOS部分
 
10.2.3 NT头
 
10.2.4 节头表
 
10.2.5 代码节
 
10.2.6 数据节
 
10.2.7 导入节
 
10.3 链接器代码实现
 
10.3.1 生成PE文件头
 
10.3.2 加载目标文件
 
10.3.3 加载引入库文件
 
10.3.4 解析外部符号
 
10.3.5 计算节区的RVA地址
 
10.3.6 重定位符号地址
 
10.3.7 修正需要重定位的地址
 
10.3.8 写PE文件
 
10.3.9 生成EXE文件
 
10.4 SCC编译器、链接器总控程序
 
10.5 成果展示
 
10.6 全书代码架构
 
第11章 SC语言程序开发
 
11.1 SC语言程序开发流程
 
11.2 SCC编译器测试程序
 
11.2.1 表达式测试
 
11.2.2 语句测试
 
11.2.3 结构体测试
 
11.2.4 函数参数传递测试
 
11.2.5 字符串测试
 
11.2.6 全局变量测试
 
11.3 语言举例
 
11.3.1 可接收命令行参数的控制台程序
 
11.3.2 可接收命令行参数的Win32应用程序
 
11.3.3 HelloWindows窗口程序
 
11.3.4 文件复制程序
 
11.3.5 九九乘法表
 
11.3.6 打印菱形
 
11.3.7 屏幕捕捉程序
 
参考文献
 
附录A SC语言文法定义中英文对照表
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐