编译、汇编、翻译原理知识概括
编译、汇编、翻译原理知识概括
- 机器语言,汇编语言,高级语言
- 翻译、汇编、编译、解释
- 编译程序
机器语言,汇编语言,高级语言
简述:
- 高级语言和汇编语言都必须转化成机器语言才可以被计算机执行。
- 机器语言:
①机器语言是由机器指令构成的,每一条机器指令都是由0和1构成的序列,由于机器语言是由0和1构成的序列,这样人们编写起来比较麻烦和容易出错,为此发明了汇编语言。 - 汇编语言:
①汇编语言由机器指令符号化后的语言,汇编语言编写的程序移植性比较差,因为它所编写的程序是跟具体的计算机体系结构密切相关的,为此发明了高级语言。 - 高级语言:
①高级语言移植性好,语法和结构更类似汉字或者普通英文,且由于远离对硬件的直接操作,使得一般人更容易学习。
翻译、汇编、编译、解释
简述:
- 翻译程序:
①所谓翻译程序是指这样一种程序,它把一种语言(称作源语言)所写的程序(源程序)翻译成与之等价的另外一种语言(目标语言)。 - 汇编程序:
①具有把汇编语言编写的程序转换成等价的机器语言程序的功能的程序。 - 编译程序:
①具有把高级语言编写的程序转换成等价的低级语言程序的功能的程序。
②所以说编译程序是翻译程序的特殊情况。
③采用编译方式在计算机上执行用高级语言编写的程序,需分阶段进行,一般分为两大阶段,即编译阶段和运行阶段。
④如果编译阶段生成的目标程序不是机器语言程序,而是汇编语言程序,则程序的执行需分3 个阶段,即编译阶段、汇编阶段和运行阶段。 - 解释程序:
①解释程序也是一种翻译程序。
②它将源程序作为输入并执行之,即边解释边执行。
③它与编译程序的主要区别是在解释程序的执行过程中不产生目标程序,而是按照源语言的定义解释执行源程序本身。
编译和解释:
- 高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类。
- 解释类:
①执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序,典型的解释型的高级语言有BASIC。 - 编译类:①编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Delphi等。
编译程序
简介:
编译器功能结构图:
词法分析:字符流->单词流
语法分析器:单词流->语法树
语义分析器:
①收集标识符的属性信息:类型(Type)、种属(Kind)、存储位置、长度、值、作用域、参数和返回值信息
②语义检查:变量或过程未经声明就使用、变量或过程名重复声明、运算分量类型不匹配、操作符与操作数之间的类型不匹配中间代码生成器:抽象语法树->中间表示(与平台无关的抽象程序):
①易于产生②易于翻译成目标程序③三地址码④四元式
注意:在 编译领域,IR 是intermediate representation (中间表示) 的缩写。
代码优化器:试图改进中间代码,以产生执行速度较快的机器代码:
代码生成器:生成可重定位的机器代码或汇编代码:
符号管理表:
①基本功能是记录源程序中使用的标识符,
②并收集与每个标识符相关的各种属性信息,
③并将它们记载到符号表中。错误处理器:
①处理方式:报告错误,应继续编译
②大部分错误在语法分析、语义分析阶段检测出来
③词法分析:字符无法构成合法单词
④语法分析:单词流违反语法结构规则
⑤语义分析:语法结构正确,但无实际意义
编译程序的前端和后端:
编译程序和程序设计环境:
- 1.编辑器:
编写代码的程序 - 2.预处理器
预处理现在已经被边缘化了,一般与编译器一起。 - 3.编译器
编译成目标程序。 - 3.连接程序
链接库函数形成可执行程序。 - 4.装入程序
从外存中装入内存运行。 - 5.调试程序
调试bug。
编译、汇编、翻译原理知识概括相关推荐
- 图灵机二义性_编译原理知识汇总
编译原理 第一章 引言 1.从面向机器的语言到面向人类的语言 汇编指令:用符号表示的指令被称为汇编指令 汇编语言:汇编指令的集合称为汇编语言 2.语言之间的翻译 转换(也被称为预处理):高级语言之间的 ...
- Angular2知识概括
Angular2知识概括 Angular版本更迭 angular2入门 Angular2架构 Angular 2 模板语法 脚手架cli 路由Router UI库 Angular2入门之模块与组件 R ...
- 操作系统内存知识概括
操作系统内存知识概括 内存 内存管理 非连续分配管理方式 虚拟内存 页面置换算法 页面分配策略 内存 内存的用户空间和内核空间: Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这 ...
- JavaEE与云服务知识概括
JavaEE与云服务知识概括 文件.块.对象存储 IaaS.SaaS 和 PaaS IDaaS 中台 服务器.域名.端口.备案 低代码与引擎 java沙箱 私有化和公有化部署 LICENSE与LICE ...
- 前端体系结构知识概括
前端体系结构知识概括 前端体系 三大框架 CSS HTML JavaScript AJAX axios UI 组件 Node.JS MVMM 前端体系 前端体系简介: 前端开发的核心是HTML + C ...
- Java与报表知识概括
Java与报表知识概括 Excel表格(POI) CSV文件(opencsv) word文档(POI) 其他(POI) easyPOI PDF文档 图表报表 Excel表格(POI) Excel报表简 ...
- 微型计算机原理设计存储系统,微机原理知识梳理
微型计算机 理解微型计算机的工作原理才能更好的理解计算机.芯片.单片机等等的工作机理.本文从微机原理出发,整理相关知识并梳理,加深对计算机的理解. 基础电路 计算机由集成电路构成,可以说计算机是跑在芯 ...
- Quartz定时器与定时任务知识概括
Quartz定时器与定时任务知识概括 定时任务调度 其他定时器 Quartz简介 Quartz简单入门 Spring和Quartz集成 SSMM和Quartz集成 Quartz集群 Quartz配置 ...
- Mysql高级知识概括
Mysql高级知识概括 Mysql高级简介 Mysql存储引擎 MYSQL配置文件 MYSQL日志 MVCC MYSQL锁机制 主重复制与读写分离 Mysql分区分表分库 MYSQL字符集与字符序 M ...
最新文章
- php 基于socket的基本通信
- Visual Studio 11增强HTML5和JS的支持
- 解决SecureCRT连接GNS3时SecureCRT标签窗口同名的问题
- Windows Server 2012正式版RDS系列④
- python代码变成运行程序_用Python脚本转换成windows的可执行程序
- anaconda如何做python笔记_Anaconda常用命令笔记
- html删除的标签属性,如何从html标签中删除属性?
- python打包安卓的方法_30个你想打包带走的Python技巧(下)
- 如何用数学方法估算一个女生前男友的数量?
- android自动化框架简要剖析(一):运行原理+基本框架
- (1)JavaScript入门
- mybatisplus高效批量更新_重磅!易赚更新超强功能,助力企业精准推送,提升转化率!...
- Linux 一句话 命令
- C# 把ABCD转换成数字
- 深度学习TF—9.循环神经网络RNN及其变体GRU、LSTM
- 关于C#对Excel导出时对整行的操作
- centos7更改默认的python版本,安装python3.6.4
- matlab simulink汽车巡航时的速度模糊pid控制
- vue使用地图api
- 霸气牵手众多手机品牌商,苏宁手机蜜蜂节实力彰显行业影响力