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; 
  repeat 
    fact := fact*x。
    x := x-1 
  until x = 0;
   write fact{output factorial of x}
end

以后会对TINY语言编译器进行具体介绍的



Tiny语言编译器简单介绍的更多相关文章

  1. 5分钟了解Python语言的简单介绍(转载)

    < 转载于Python数据之道 - 本公众号秉承“让数据更有价值”的理念,主要分享数据相关的内容,包括数据分析,挖掘,可视化,机器学习,深度学习等.>                    ...

  2. Spring表达式语言SpEL简单介绍

    Spring3引入了Spring表达式语言(Spring Expression Language,SpEL). SpEL有非常多特性.比較经常使用的包含: 1.使用bean的id来引用bean, 以下 ...

  3. 吴裕雄--天生自然 R语言开发学习:R语言的简单介绍和使用

    假设我们正在研究生理发育问 题,并收集了10名婴儿在出生后一年内的月龄和体重数据(见表1-).我们感兴趣的是体重的分 布及体重和月龄的关系. 可以使用函数c()以向量的形式输入月龄和体重数据,此函 数 ...

  4. C# 基础知识 (四).C#简单介绍及托管代码

            暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了非常多东西,也学到了非常多东西,也认识到了非常多不足之处!闲暇之余我准备又一次进一步巩固C#相关知识,包含 ...

  5. Tiny语言执行环境TM机源码

    TM机就是TINY语言编译器编译之后的汇编代码的执行环境.TM机的主要功能是将TM的汇编代码读入和执行,它具有一般计算机类似的精简指令级RISC.TM汇编语言和一般的Intel汇编语言差点儿相同,包含 ...

  6. 自己动手写一个编译器Tiny语言解析器实现

    然后,上一篇文章简介Tiny词法分析,实现语言.本文将介绍Tiny的语法分析器的实现. 1 Tiny语言的语法 下图是Tiny在BNF中的文法. 文法的定义能够看出.INNY语言有以下特点: 1 程序 ...

  7. 简单的C语言编译器--概述

      在学习了编译原理的相关知识后,逐渐的掌握一个编译器的结构.作用和实现方法.同时,希望自己在不断的努力下写出一个简单的C语言编译器. 实现步骤 词法分析器:将C语言测试代码分解成一个一个的词法单元: ...

  8. 《R语言入门》语言及环境简单介绍

    简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

  9. R语言的帮助使用和图形功能简单介绍

    R语言的帮助使用和图形功能简单介绍 R语言帮助,在Windows桌面下,有很多种.最长使用的是在命令行下help() > help.start() 会在浏览器中,打开帮助的主页 watermar ...

随机推荐

  1. python的列表元组字典集合比较

    定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...

  2. 使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话

    使用aspnet_regsql.exe 创建ASPState数据库,用来保存session会话   因为公司有多台服务器,所以session要保存在sql server上,因此要在数据库中建立存放se ...

  3. 3)nginx的启动与停止、重启,linux配置对外端口

    [启动] 启动代码格式:nginx安装目录地址 -c nginx配置文件地址例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /u ...

  4. ios编程规范

    允许使用较长的描述尽量不要使用缩写,而是将完整的意思写出来.源于代码的维护可能会被不同文化背景的programmer阅读 适当的命名前缀,比如给变量,协议等,不要给方法加前缀 方法命名规则一般以小写字 ...

  5. ios开发小结之app发布升级

    在近两个月的开发中,遇到了挺多问题的,几天加班加点,最后还是在年前发布并更新了一个版本,欢迎下载无觅下载. 最头疼的问题是提交app审核,之前的工程不太规范,导致一些文件icon没有设置好,直接val ...

  6. MD5 algorithm in Objective C

    How to calculate the MD5 in objective C ? md5 is available on the iPhone and can be added as an exte ...

  7. SuperIndicator 一个专用打造轮播的类库

    Github地址:https://github.com/hejunlin2013/SuperIndicator,欢迎fork,star.著名Android-Universal-Image-Loader ...

  8. EasyMvc入门教程-基本控件说明(7)文字块导航

    文字块导航其实就是开发winform时候常见的 带Title的Group面板..~!@#¥..好吧,没开发过winform的同学看下图: 实现代码如下: @Html.Q().BlockField(). ...

  9. C#调用C++Dll封装时遇到的一系列问题【转】

      最近帮底层开发的同时用C#重新封装一下dll,也就是用C#类来封装C++Dll里的方法,以供用户使用. 之前也用到过类似的应用,大多数问题都出在类型转换上,但是这次的应用层出不穷,所以在这里总结一 ...

  10. 2017.2.9 开涛shiro教程-第十章-会话管理(一)

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第十章 会话管理(一) 10.1 会话 shiro提供的会话可以用 ...