- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 绪论 内容 汇编语言和高级程序设计语言 编译器基本构造 编译技术 编译器工作过程 1.1 汇编语言和高级语言 汇编语言、机器语言的特点 面向机器,CPU可直接执行 每个操作仅完成简单功能 缺少高层抽象元素的表示方法,直接访问内存地址 难以在不同机器间移植 程序编写复杂困难 汇编语言和高级语言 高级语言 面向程序员,机器不能直接执行,必须经过编译或解释才能执行 支持复杂的计算组合和流程控制 支持抽象的数据类型,通过名字访问变量、对象、类、函数等抽象元素 容易在不同机器间移植 编写复杂程序更为方便直观 C语言程序 x=a+b+c+d 对应的汇编程序 mov eax,dword ptr [ebp-8] add eax,dword ptr [ebp-0Ch] add eax,dword ptr [ebp-10h] add eax,dword ptr [ebp-14h] mov dword ptr [ebp-4],eax 1.2 编译器的基本概念 狭义的编译器 将高级语言编写程序翻译为汇编或二进制代码的软件系统 主要功能: 判断程序的合法性 程序被等价翻译为低级语言 程序错误的识别与提示 狭义的编译器 广义的编译器 广义的编译器 将一种语言编写的程序,翻译为具有相同功能的另一种语言的程序的软件 广义的编译器 编译器和解释器 编译器将一种语言编写的程序,翻译为另一种语言表示的程序 C++程序?可执行程序 ?C语言源程序 ?汇编程序 但这些程序本身并不能执行,而只是保存在磁盘或其他介质上的符号的集合 谁执行程序? 1、计算机 2、解释器 3、虚拟机 计算机执行程序 解释器的基本概念 解释器是运行在某个硬件平台上的一种软件。该软件负责读取输入的程序代码,并对其进行相应的计算或执行相应的功能 解释器的用途 编译器与虚拟机 编译器只把程序翻译为另一种语言的程序,而并不负责对翻译结果进行执行 CPU和解释器才是对翻译结果的执行者 解释器的两种类型: 1、高级语言解释器 2、低级语言解释器(虚拟机) 高级语言解释器 输入的是具有复杂语法、语义结构的源程序,如Basic语言,TCL/Tk语言,Matlab的m语言等编写的源程序,Dos批处理程序、Linux的Shell脚本程序 直接执行该程序的各种计算与交互任务 高级语言解释器的特点 结构复杂,执行效率低 虚拟机 高级语言的优点 面向程序员,与底层硬件无关 编译与执行分离,执行效率高 可移植性好 高级语言的不足 移植时需要重新编译 不同平台虽然差别不大,但即使微小的差别也可能引起移植时巨大的麻烦 虚拟机(续) 虚拟机 专门设计的具有通用性虚拟计算机 包括专门的指令集(通常称为字节码) 包括特定的内存管理体制 支持标准的数据表示格式(如IEEE浮点格式) 支持线程、锁等复杂模型 虚拟机的实现 软件实现的虚拟机 如Java虚拟机,可用来解释执行编译后的字节码程序 硬件实现的“虚拟机” 实际上,硬件实现的应该是真实的机器。但由于其指令集和体系结构是符合某种虚拟机规范的,因此也可认为是“虚拟机” 例如,直接实现Java虚拟机的硬件Java机器 1.3 编译技术的基本构造与工作原理 编译器和语言的规格说明 语言手册与规范 程序员手册与编程书籍 以上两种只有编译器设计者人工阅读,并将其转换为软件设计方案。存在二义性,无法保证不同编译器设计者的理解是完全相同的。 形式化的规格说明 精确的数学化的说明,可对其完善性进行数学验证,并根据规格说明自动生成编译器设计框架。 编译器的内部工作原理 人工翻译过程 int a;int add(int d1,int d2){return d1+d2;}int main(void){a=5;a=add(a, 6);return 0;} 自动翻译过程 1、线性扫描过程:自左向右,逐个字母 2、识别单词(关键字,标识符,注释,各种数字等) 3、复杂程序结构的识别不是简单线性的 识别过程不能通过简单的线性扫描完成 需要考虑当前已经识别到什么程度了 当扫描到”;”时,可以判定当前识别到的是一个变量定义。 当扫描到int d1后面的”,”时,可以确定遇到的是一个变量定义,但该变量却是函数add的形式参数。 虽然int a和int d1在构成上是一样的,但由于处于程序中的不同位置,因此对其理解却有着很大的不同。 编译器应当能够处理这些复杂的情况。 1.4 程序设计语言的编译技术 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 程序信息管理和错误检查与处理 词法分析 以字符为单位,从
您可能关注的文档
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 05.ppt
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 06.ppt
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 07.ppt
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 08.ppt
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 09.ppt
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 10.ppt
- 边做边学——Photoshop+corelDRAW综合实训教程 教学课件 作者 江新顺 11.ppt
- 边做边学——Photoshop+Illustrator综合实训教程 教学课件 作者 马丹 姚磊磊 01.ppt
- 边做边学——Photoshop+Illustrator综合实训教程 教学课件 作者 马丹 姚磊磊 02.ppt
- 边做边学——Photoshop+Illustrator综合实训教程 教学课件 作者 马丹 姚磊磊 03.ppt
- CNAS-CL63-2017 司法鉴定-法庭科学机构能力认可准则在声像资料鉴定领域的应用说明.docx
- 12J7-3 河北《内装修-吊顶》.docx
- 12N2 河北省12系列建筑标准设计图集 燃气(油)供热锅炉房工程.docx
- 内蒙古 12S8 排水工程 DBJ03-22-2014.docx
- 山西省 12S10 12系列建筑标准设计 管道支架、吊架.docx
- 16J601-木门窗标准图集.docx
- 12J8 河北省12系列《 楼梯》.docx
- CNAS-GL37 2015 校准和测量能力(CMC)表示指南.docx
- CNAS-RL02-2016 能力验证规则.docx
- 津02SJ601 PVC塑料门窗标准.docx
最近下载
- 2024年广州市高三二模(普通高中毕业班综合测试(二)数学试卷(含官方答案及逐题解析).pdf
- 武汉市2025届高中毕业生四月调研考试(四调)数学试卷(含答案详解).pdf
- (毕业论文)果树采摘机器人的发展现状及运动学分析.doc VIP
- 【高中语文】双新背景下的语文教学设计+85.pptx VIP
- 雨课堂学堂在线《兵棋(中国人民武装警察部队警官学院)》学堂云单元测试考核答案.pdf VIP
- 11.3 一元一次不等式组(教学设计)七年级数学下册(人教版2024).docx
- 年产1万吨一氯甲烷的工艺流程设计.doc
- 医疗器械质量管理制度-全套规章制度.docx VIP
- 木材质量v验收标准.doc
- 直肠癌(外科学课件).ppt VIP
文档评论(0)