一 概论 1.基本概念 编译器是将一种语言翻译为另一种语言的计算机程序。 过程描述如下: 源程序→ 编译器→ 目标程序。 基础知识: 自动机原理 数据结构 离散数学 编译器的发展: 冯诺依曼体系结构计算机 --> 机器语言程序 --> 汇编语言 ...
一 设计任务 . 程序实现要求 PL 语言可以看成PASCAL语言的子集,它的编译程序是一个编译解释执行系统。PL 的目标程序为假想栈式计算机的汇编语言,与具体计算机无关。 PL 的编译程序和目标程序的解释执行程序都是用JAVA语言书写的,因此PL 语言可在配备JDK的任何机器上实现。 其编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析和代码生成程序都作为一个独立的过程,当语法分析需要读 ...
2016-05-30 13:18 0 5642 推荐指数:
一 概论 1.基本概念 编译器是将一种语言翻译为另一种语言的计算机程序。 过程描述如下: 源程序→ 编译器→ 目标程序。 基础知识: 自动机原理 数据结构 离散数学 编译器的发展: 冯诺依曼体系结构计算机 --> 机器语言程序 --> 汇编语言 ...
从本篇开始,我将开辟一个原创系列来介绍JIT动态编译器的原理以及用一个小例子来阐述实现方法。例子实现主要在WINDOWS平台下,基于VC,主要需要读者了解函数指针的使用,以及一些简单的汇编知识。在此希望各路高手观赏和指正! JIT动态编译器主要用来实现虚拟机,方式是CPU指令转译 ...
(注:可以下载本文的PDF版,我也上传到了百度文库,大家可以自己找一下。) Context-free Grammar的编译器设计和实现 摘要 本文要做的工作如下: l 手动写Expression Grammar的词法分析器、语法分析器和语义分析器。 l 设计Context-free ...
BrainFuck语言 极简的一种图灵完备的语言,由Urban Müller在1993年创造,由八个指令组成(如下表)。工作机制与图灵机非常相似,有一条足够长的纸带,初始时纸带上的每一格都是0,有一个数据读写头指向纸带的初始位置,读写头的行为由指令指示。 指令 ...
学校编译课的作业之一,要求阅读两个较为简单的编译器的代码并做注释, 个人感觉是一次挺有意义的锻炼, 将自己的心得分享出来与一同在进步的同学们分享. 今后有时间再做进一步的更新和总结,其中可能有不少错误,也请各位大佬不吝指正. 代码可以通过使用Lazarus等pascal环境执行。 源码仓库 ...
前一阵做了个编译器(仅词法分析、语法分析、部分语义分析,所以说是前端),拿来分享一下,如有错误,欢迎批评指教! 整个代码库具有如下功能: 提供编译器所需基础数据结构、计算流程框架类,可供继承使用; 提供基础数据结构的可视化控件; 提供类似YACC的词法分析器、语法分析器自动生成功能; 提供 ...
编译器设计-代码优化 Compiler Design - Code Optimization 优化是一种程序转换技术,它试图通过使代码消耗更少的资源(如CPU、内存)来改进代码,并提供高速。 在优化中,高级通用编程结构被非常高效的低级编程代码所代替。代码优化过程 ...
在编译理论中,通常将编译过程抽象为5个主要阶段:词法分析(Lexical Analysis),语法分析(Parsing),语义分析(Semantic Analysis),优化(Optimization),代码生成(Code Generation)。这5个阶段类似Unix管道模型,上一个阶段的输出 ...