摘要:
1.1信息就是位+上下文 系统中所有的信息都是由一串位组成的, 所谓的位就是bit, 每八位是一个字节也就是byte, 理论上讲所有的文件可以分为两种, 一种是由ascii字符组成,这种我们也称作文本文件(其实其他字符编码也算, 这里不考虑), 剩下的都叫做二进制文件。所以其实一个文件到底会被如何翻 阅读全文
摘要:
大概一个月的时间吧, 一直在学习编译原理,直到5月31号我仍然还在看编译原理的视频教程, 但是我直接其实我的各方面知识还是有很多欠缺, 比如我没有办法把我分析得出的抽象语法树进一步转化为汇编代码或者java字节码, 因为那些对于我而言又是一个全新的领域, 同时我知道我大4还是会有编译器的课程的, 同时我一直在用java写编译器, 一个很重要的原因就在于, 我的C语言水平不够支持我完成这样一个比较复... 阅读全文
摘要:
接下来来看下一种体系结构, 寄存器计算机... 为了方便学习, 这里构建出了一个相对简化寄存器计算机结构模型... 和栈式计算机流程一样, 接来下是指令集和伪指令和代码生成算法.. 最终生成的寄存器计算机代码 : 阅读全文
摘要:
写到12点20勉强算是实现了, 缺陷还很多就不多说了, 具体自己上github去看, 上面我写的很清楚... 发现有任何bug随时联系我... https://github.com/zhang77595103/Simple-C 阅读全文
摘要:
具体来看看如何从C--(之前有提到)到Stack : 下面都是简单的实例代码, 也没什么好说的... 大概就是这样...接下来是运行生成代码的几种思路(为了便于以后复习还是截下来了...) 指的一提的是 : 最后一种非栈式计算机模拟栈式计算机的思路其实就是java虚拟机中jit技术的思路, 在解释过 阅读全文
摘要:
先来看栈式计算机...栈式计算机的背景 : 接下来是它的结构和指令集... 接下来是每条指令的具体意义 : 同理减法乘除法就不说了... 接下来再看看变量内存分配的伪指令(之所以叫伪指令是因为它并不会被ALU执行, 而真正的指令是需要ALU来执行的).. 接下来是一个实例... 如图, 上面三条就是 阅读全文
摘要:
这两天把编译器撸到了抽象语法树环节, 准备看完第八单元一口气撸完编译器...至于翻译成什么语言, 先看看再说... 之前讨论完语法检查和符号表, 那么前端就算全部结束了, 那么我们可以把视角转移到中后端... 其结构大概是这样的... 这个阶段就是所谓的代码生成, 那么代码生成具体要完成任务是这样的 阅读全文
摘要:
经过一天的实践, 勉强写完了语法分析部分和词法分析的抽象语法树的生成部分... 但是也发现也昨天规定的词法和文法中出现的一些问题, 同时我根据情况进行了一些改动... prog -> func funcs | func -> type id () block block -> { stmts } s 阅读全文
摘要:
从上海回来这两天一口气看完了语义分析, 前段也就差不多了, 本来准备看代码生成的, 人突然就不想看了, 老毛病又犯了 : 很久没不敲代码, 手痒的不行, 所以决定边往前推进边实现前面的部分... 想到终于可以开始实现编译器心里就激动的不行, 那么就这么愉快的开始了... 首先当然是规定语言的词法语法 阅读全文
摘要:
语义分析中有一些比较常见的问题值得思考 : 感觉这一部分也没什么可讲的, 主要还是看实践吧... 接下来是这一部分的题目, 在这个题目中,你将亲自动手实现C--语义的语义分析器。具体的题目要求见: http://staff.ustc.edu.cn/~bjhua/mooc/semant.html 具体 阅读全文