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. enum枚举类型

    枚举类型的实例是常量,且它们都用大写字母表示. 简单枚举例子: public enum Spiciness { NOT, MILD, MEDIUM, HOT, FLAMING } public cla ...

  2. C#图解教程学习笔记——类和继承

    一.屏蔽基类的成员所有类都派生自object类.虽然类只能直接继承一个基类,但继承的层次没有限制.虽然派生类不能删除它继承的任何成员,但可以用与基类同名的成员来屏蔽(mask)基类成员.1. 要屏蔽一 ...

  3. 洛谷 P1014 Cantor表【蛇皮矩阵/找规律/模拟】

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … ...

  4. 大型网站优化-memcache技术

    大型网站优化-memcache技术 memory+cache 内存缓存 memcache简介 memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发 ...

  5. 源码分析——迁移学习Inception V3网络重训练实现图片分类

    1. 前言 近些年来,随着以卷积神经网络(CNN)为代表的深度学习在图像识别领域的突破,越来越多的图像识别算法不断涌现.在去年,我们初步成功尝试了图像识别在测试领域的应用:将网站样式错乱问题.无线领域 ...

  6. Jenkins插件HTML Publisher Plugin的使用

    前提: 下载插件HTML Publisher plugin 一.安装 安装好HTML Publisher plugin之后,会在新建或者编辑项目时,在[增加构建后操作步骤]出现[Publish HTM ...

  7. 全面了解Nginx主要应用场景

    http://www.raye.wang/2017/02/24/quan-mian-liao-jie-nginxdao-di-neng-zuo-shi-yao/

  8. rapidxml读取包含中文路径的xml解析错误的解决方法

    from http://blog.csdn.net/qinwei4072880/article/details/38865179 1.rapidxml不支持中文路径. 2.rapidxml不支持Uni ...

  9. 都是 htmlspecialchars的错,解决 织梦cms dedecms 标题不能为空 不支持php5.3 php5.4 php5.5版本

    article_add.php  101行 $title = htmlspecialchars(cn_substrR($title,$cfg_title_maxlen)); 改成 $title = h ...

  10. mac python 切换系统默认版本

    1 找到所安装python路径/usr/local/Cellar/python/2.7.13/bin2 vim ~/.bash_profile 3 添加如下代码: PATH="/usr/lo ...