Tiny语言编译器简单介绍
1.简单介绍:编译器是将一种语言翻译成还有一种语言的程序。编译器将源程序的代码作为输出,从而产生用目标语言编写的等价程序。比如源码为C/C++等高级语言,那么目标语言就是目标机器的机器代码。也就是能够直接执行的机器代码(各种二进制)。
以下就是一个编译过程的简单样例:
x=2 (高级语言)
MOV x,2 (汇编语言)
C7 06 0000 0002 (机器代码)
2.相关程序
a.解释程序(interpreter):它会马上运行程序而不是编译完毕后在运行,典型的解释程序有Java,Lisp等
b.汇编程序(assembler):它将汇编语言翻译成机器代码
c.连接程序(linker):编译器和汇编程序常常以来其它的头文件或者资源,连接程序将他们收集到一个可运行文件里
d.装载程序(loader):处理全部的与基地址和起始地址相关的可重定位地址
e.编辑器(editor):编写源码
f.调试程序(debugger):调试程序用的
g.描写叙述器(profiler):描写叙述程序的执行时间等信息
h.项目管理器(project manager):用于项目管理的程序
3.编译的一般步骤
以字符流的形式扫描程序,进行词法分析。然后进行语法分析,语义分析,源码优化,代码生成。目标代码优化等一般性步骤(之后会重点分析)
4.主要数据结构
记号(token)。语法树,符号表,常数表,中间代码,暂时文件
5.TINY语言简单介绍
a.语句序列用分号隔开
b.全部变量都是整形变量,且不须要声明
c.仅仅有两个控制语句。if和repeat
d.if推断语句必须以end结束,且有可选的else语句
e.read和write完毕输入输出
f.花括号表示凝视,但不同意嵌套凝视
g.有<和=两个比較运算符
h.有+、-、*、/简单运算符
以下来看一个简单样例:
{ Sample program in TINY language - compute factorial } read x;{input an integer}if 0<x then {don't compute if x<=0}fact := 1;repeatfact := fact*x。x := x-1until x = 0;write fact{output factorial of x}end以后会对TINY语言编译器进行具体介绍的
Tiny语言编译器简单介绍的更多相关文章
- 5分钟了解Python语言的简单介绍(转载)
< 转载于Python数据之道 - 本公众号秉承“让数据更有价值”的理念,主要分享数据相关的内容,包括数据分析,挖掘,可视化,机器学习,深度学习等.> ...
- Spring表达式语言SpEL简单介绍
Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有非常多特性.比較经常使用的包含: 1.使用bean的id来引用bean, 以下 ...
- 吴裕雄--天生自然 R语言开发学习:R语言的简单介绍和使用
假设我们正在研究生理发育问 题,并收集了10名婴儿在出生后一年内的月龄和体重数据(见表1-).我们感兴趣的是体重的分 布及体重和月龄的关系. 可以使用函数c()以向量的形式输入月龄和体重数据,此函 数 ...
- C# 基础知识 (四).C#简单介绍及托管代码
暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了非常多东西,也学到了非常多东西,也认识到了非常多不足之处!闲暇之余我准备又一次进一步巩固C#相关知识,包含 ...
- Tiny语言执行环境TM机源码
TM机就是TINY语言编译器编译之后的汇编代码的执行环境.TM机的主要功能是将TM的汇编代码读入和执行,它具有一般计算机类似的精简指令级RISC.TM汇编语言和一般的Intel汇编语言差点儿相同,包含 ...
- 自己动手写一个编译器Tiny语言解析器实现
然后,上一篇文章简介Tiny词法分析,实现语言.本文将介绍Tiny的语法分析器的实现. 1 Tiny语言的语法 下图是Tiny在BNF中的文法. 文法的定义能够看出.INNY语言有以下特点: 1 程序 ...
- 简单的C语言编译器--概述
在学习了编译原理的相关知识后,逐渐的掌握一个编译器的结构.作用和实现方法.同时,希望自己在不断的努力下写出一个简单的C语言编译器. 实现步骤 词法分析器:将C语言测试代码分解成一个一个的词法单元: ...
- 《R语言入门》语言及环境简单介绍
简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...
- R语言的帮助使用和图形功能简单介绍
R语言的帮助使用和图形功能简单介绍 R语言帮助,在Windows桌面下,有很多种.最长使用的是在命令行下help() > help.start() 会在浏览器中,打开帮助的主页 watermar ...
随机推荐
- C#图解教程学习笔记——方法
一.字段和本地变量.本地常量字段:隶属于类的变量,即类的成员变量.本地变量:于保存本地的或临时的计算数据,即局部变量.本地常量:必须声明在块内部,声明时必须初始化,声明后不能改变.实例字段与本地变量区 ...
- java 基于tcp客户端服务端发送接收数据
客户端: package demo03; import java.io.IOException; import java.io.InputStream; import java.io.OutputSt ...
- 八、Ubuntu安装Tomcat和jdk
1.解压Tomcat 和 jdk tar -zxvf apache-tomcat-8.0.28.tar.gz tar -zxvf jdk-8u60-linux-x64.gz 2.将解压后的tomcat ...
- Android 代码里设置ImageView的src和background
设置ImageView的src: image.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); String path= ...
- 从 Git Gui 管理的Repository(库) 提交更改到 Bonobo服务器管理的Repository(库)
要提交更改到Bonobo服务器管理的某个Repository(库),必须先得在Bonobo服务器上有此Repository(库)——简直就是废话.那么怎么才能这个Repository(库)变出来呢?其 ...
- ef SaveChanges()报"更新条目时出错,有关详细信息请参见内部异常"
报这个错误是因为表没有设置主键,设完主键后再重新更新Entity,就可以添加了
- C#里判断字符串是否为纯数字
c bool IsNumeric(string str) //接收一个string类型的参数,保存到str里 { if (str == null || str.Length == 0) //验证这个参 ...
- nohup 输出重定向
今天在使用nohup命令的时候,每次后台执行生成的日志文件名都为nohup.out,现需要改变nohup命令生成的文件名. 在shell中,文件描述符通常是:STDIN标准输入,STDOUT标准输出, ...
- 【重点突破】—— Vue1.0到Vue2.0的变化
前言: 本文参考作者:_So_ 和 我是某慧 的博文,重点梳理Vue1.0升级到Vue2.0后在开发中要注意的不同,以做学习. 组件模板不再支持片段代码,必须有一个顶级元素包裹,例如: ...
- Project Euler:Problem 89 Roman numerals
For a number written in Roman numerals to be considered valid there are basic rules which must be fo ...