概况

程序语言是为了书写计算机程序而人为设计的符号,用于对计算过程进行描写叙述、组织和推导,程序语言分为低级语言和高级语言,低级语言包含计算机硬件能识别的由0、1组成的机器指令语言和用符号组成的指令语言汇编集合的汇编语言,高级语言是人们开发的功能更强、抽象级别更高的语言以支持程序设计,面向各类应用的程序语言。

因为计算机仅仅能理解由0、1序列构成的机器语言。因此高级程序语言须要翻译,即将高级语言或汇编语言编写的程序翻译成某种机器语言好曾向,担负这一任务的程序称为“语言处理程序”。语言处理程序的基本方式为汇编、解释和编译。

汇编程序

用符号表示的指令称为汇编指令,汇编指令集合称为汇编语言。

汇编语言由指令语言、伪指令语句和宏指令语句构成。指令语句又称为机器指令语言。将指令语言汇编后能产生对应的机器代码。伪指令语句,是指示汇编源程序时完毕某些工作,通俗的说是写给“汇编软件”看的。不翻译成机器码。宏指令语句。多次反复使用的程序段叫宏,须要使用这段程序时。仅仅要使用宏名即能够。这样宏的引用就是宏指令语句。

汇编语言编写的程序为汇编语言程序,汇编语言程序将汇编语言所编写的源程序翻译成机器指令程序。

该工作包含两部分,一是将汇编语言转换成机器指令,还有一部分处理源程序中的伪指令。该工作是实现途径是通过两次扫描源程序。

编译程序

编译程序是把某种高级语言书写的源程序翻译成目标语言程序。

编译程序工作分为六个阶段,各自是此法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成这六个阶段,可是在实际的编译器中可能会将当中的某些阶段结合在一起进行处理。

在逻辑上将这六个阶段分为前段和后端,前段从词法分析到中间代码生成4个阶段,后端包含代码优化和目标代码生成这两个阶段,前段和后端把编译器分成了与机器无关编程语言有关和机器有关编程语言无关两部分。

解释程序

解释程序能够直接将源程序解释运行。也能够将源程序翻译成某种中间代码形式。然后对中间代码进行解释来运行。

解释程序的词法、语法和语义与编译程序基本同样,只是不同的是解释程序不产生目标程序,执行时候须要源程序和解释程序參与。

编译与解释比較

编译方式下。机器上仅仅执行目标程序,源程序和编译程序不參与目标程序执行。解释方式下。源程序和解释程序要參与到程序执行过程中。执行程序的控制权在解释程序。

编译较解释效率高,解释方式下执行程序,须要重复多次扫描源程序,而且须要很多其它的内存。

编译方式进行目标代码生成并优化在时间和空间上都比解释程序耗费多,可是编译程序的最大的优势是一次编译完毕多次执行。所以总体效率比解释高。

转载于:https://www.cnblogs.com/hrhguanli/p/5085071.html

编译原理——语言处理程序相关推荐

  1. 编译原理 —— 语言的定义

    语言的形式化定义 文法和语言之间的联系 给定一个文法,就能从结构上唯一地确定其语言,即 G → L(G) 给定一种语言,能确定其文法,但这种文法不是唯一的,即 L → G 1 L → G_1 L→G1 ...

  2. 中山大学编译原理实验——实现PL0语言的编译程序(无坑有缩进版)

    PL0-Compiler 代码传送门 ps:吐槽一下,老师给的代码实在是太烂了.又没缩进又多编译错误,除此之外还有很多细节漏掉关键字,总之就很多坑,所以这里发一个无坑带缩进版,方便大家学习. 中山大学 ...

  3. 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器

    编译原理课程实践--实现具有初等函数运算语言的解释器或编译器 作者:Sylvan Ding |转载请注明文章出处! 摘要:本文主要内容是设计词法分析器.语法分析器(LL(1).SLR(1))和语义分析 ...

  4. 编译原理上机实习c语言小子集编译程序的实现报告,编译原理上机实习指导书(2015-11修改).pdf...

    <编译原理上机实习>指导书 一.上机实习目的 理解编译程序的构造原理,掌握编译程序的构造方法与技术.通过实习,使学生既加深对 编译原理基础理论的理解,又提高动手能力,特别是提高软件设计能力 ...

  5. 编译原理视角下的 c c 语言左值教学,西安交通大学18年3月课程考试《编译原理》作业考核试题...

    Q.微信均是1219895388,Q:1219895388 联系:QQ:576696131 西安交通大学18年3月课程考试<编译原理>作业考核试题 共题,总分:100分 答题中 分 一.单 ...

  6. c语言的适当大小的子集,编译原理上机实验报告

    编译原理上机实验报告,编制C语言子集的词法分析程序,编制递归下降法的语法分析程序 编译技术上机实验题目 实验一 一.题目 编制C语言子集的词法分析程序 二.目的 通过设计.编制.调试一个具体的词法分析 ...

  7. 大前端开发者需要了解的基础编译原理和语言知识

    转自:https://yq.aliyun.com/articles/180879 在我刚刚进入大学,从零开始学习 C 语言的时候,我就不断的从学长的口中听到一个又一个语言,比如 C++.Java.Py ...

  8. 编译原理lr(0)c语言,关于编译原理:LR(1)LR(0)文法判断?

    "编译原理"是大学计算机类专业的一门主干课程.设置本课程的目的,在于系统的向学生讲述编译系统的结构.工程流程以及编译程序各组成部分的设计原理和实现技术,使学生通过本课程的学习,既掌 ...

  9. 《编译原理》实验报告——TINY语言的词法分析

    TINY语言的词法分析 实验目的 (评价依据,描述是否准确到位) 构造tiny语言的词法分析器(扫描器),要求利用第三方的lex工具进行构造. 构造出的扫描器,能够读入教材样例中给出的tiny语言的示 ...

最新文章

  1. iOS 一行命令发布 Pod 框架
  2. java 实现栈_栈的Java实现
  3. [Spring5]IOC容器_Bean管理XML方式_p名称空间注入
  4. unity 飞机 残骸模型_训练残骸模式– Java 8中的改进实现
  5. Python在cmd中配置虚拟环境ERROR: Command errored out with exit status 1:
  6. C++中vector章节iterator与const_iterator及const iterator区别
  7. 自编码器(Auto-encoder) (下)它的应用
  8. 函数的重载、覆盖和隐藏
  9. java自定义异常(Exception、throws、try-catch)
  10. Windows 下修改 MySQL 编码为 utf8
  11. scrapy xpath空列表_我的第一个爬虫——Scrapy爬虫详细操作入门指南(1)
  12. 【ECG实践篇(1)】MIT-BIH数据库数据解析的方法以及使用rdann获取人工标注注释的方法
  13. C# ADO.NET中设置Like模糊查询
  14. 傅立叶变换的物理意义(转)
  15. 只有程序员才能看懂的趣图,第二个我就忍不住了哈哈哈哈!
  16. 有感于Google退出中国
  17. 阿里巴巴 Java 开发手册1.4.0
  18. 双核处理器在XP系统下需要注意的事项
  19. volatile vs synchronized
  20. Ubuntu 18.04安装后资源和问题汇总

热门文章

  1. eclipse常用功能:代码重构(变量批量重命名)、自定义注释、代码模板、打开断言
  2. Pyhon爬虫开发:URLError的使用
  3. ElementUI弹出新增窗口
  4. Springcloud配置中心客户端启动时Could not resolve placeholder ‘version‘ in value “${version}“报错原因
  5. 按照 排序 oracle,oracle 按照中文排序
  6. php 求数组合集,PHP数组排序函数合集 以及它们之间的联系分析
  7. swift语言 数组定义_Swift3中数组创建方法
  8. 多线程下载的原理和基本用法
  9. Qt之创建并使用共享库
  10. 省市区联动三级下拉列表实现