欢迎来到天天文库
浏览记录
ID:40098473
大小:2.32 MB
页数:252页
时间:2019-07-21
《《编译原理实用教程》ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第1章编译系统概述1.1程序设计语言的发展1.2基本术语解释1.3编译过程概述1.4出错处理1.5编译程序的前端和后端1.6编译程序的实现方式1.1程序设计语言的发展汇编语言(AssembleLanguage)机器语言(MachineLanguage)程序设计语言(ProgrammingLanguage)例计算表达式3*16+2的值,实现该计算的机器语言程序、汇编语言程序和程序设计语言(C语言)程序如下所示。目标计算机的系统结构和汇编语言的使用方法详见本书第7章。22038210260261011000f000LoadR0,3MulR0,10LoadR1,2A
2、ddR0,R1WriteR0Haltvoidmain(void){cout<<3*16+2;}注:10表示16㈠机器语言机器指令集合称为机器语言。机器指令即二进制数,通常由若干字节构成。①优点计算机可直接识别执行可充分利用硬件特性②缺点可读性差指令系统随机种而异由于机器指令直接或间接含有绝对地址,增加或减少一条指令,可能会引起多条指令的修改。编程者需协调内存的使用所以,机器语言形式的程序编制和维护困难,限制了计算机的推广和应用。㈡汇编语言用记忆符取代二进制位,存储地址和汇编语句的序号可用符号名表示。①优点用符号取代二进制数,提高了程序的可理解性。性能较好的汇编
3、语言,可用符号名来表示存储地址和汇编语句序号,这样避免了在汇编语句中绝对地址的出现。可充分利用硬件特性所以,汇编语言在一定程度上降低了程序编制和维护的难度。②缺点汇编语句和机器指令基本上是一对一的,所以汇编语言的编程效率并没有质的提高。和机器语言一样,汇编语言依附于目标计算机。需汇编程序,将汇编语言译成机器语言。㈢程序设计语言程序设计语言又称高级语言。程序设计语言接近于英语,相当于工程语言。目前计算机系统一般含有多个程序设计语言的翻译程序(例VC、VB等),甚至对同一个程序设计语言配备了多个不同性能的翻译程序,供用户选择使用。①优点独立于具体计算机,面向过程(
4、函数)或对象。程序设计语言接近于英语,可理解性好。数据类型丰富,各种功能的语句齐备,一条语句至少相当于几十条汇编语句。所以,程序设计语言极大地提高了编程效率,大幅度地降低了编程难度。②缺点需翻译程序,将高级语言译成机器语言或汇编语言。对硬件操作困难,高级语言通常提供汇编语言接口。1.2基本术语解释㈠源语言和源程序(SourceLanguageandSourceProgram)用程序设计语言书写的程序,称为源程序,该程序设计语言称为源语言。源程序通常用编缉程序输入,用字符(ASCII码)表示,以文本文件形式存储。㈡文本文件(TextFile)文本文件的内容由94
5、个图形字符‘!’-‘~’(33-126)和4个控制字符换行(10)、回车(13)、空格(32)、TAB(9)构成,文本文件又称为ASCII码文件,扩展名通常为TXT,文件尾用控制字符EOF(26)指示。当换行和回车二个控制字符从文本文件读入内存,在C语言中是用一个字符(换行)表示。㈢目标语言和目标程序(TargetLanguageandTargetProgram)目标语言可以是机器语言(二进制数),也可以是汇编语言(字符),或者是其它中间语言(字符),但最终结果必定是机器语言。机器语言程序用二进制文件存储,汇编语言或中间语言程序用文本文件存储。目标程序是经翻译
6、程序加工后用目标语言表示的程序。㈣二进制文件(BinaryFile)二进制文件由机器指令即二进制数构成,因二进制数可能是26,故文件尾用文件长度(文件的字节数)指示,扩展名通常为EXE。㈤翻译程序(Translator)将源程序译成逻辑上等价的目标程序的程序。翻译程序有二种工作方式:编译和解释。解释程序Interpreter源程序结果输入数据解释、执行解释方式主要特点是:用户程序是消极的。用户程序运行时,控制点在解释程序,即用户程序的执行离不开解释程序。①解释方式(Interpret)以源程序作为输入,输入一句解释执行一句,不产生完整的目标程序,相应的翻译程序
7、称为解释程序(Interpreter)。工作方式如下图所示:②编译方式(Compile)将源程序全部译为目标程序,该目标程序可在操作系统环境下直接执行,相应的翻译程序称为编译程序(Compiler),工作方式如下图所示:编译程序Compile连接程序Link装入运行Run编辑程序EditASCII码二进制(整体未定位)二进制(整体定位)源程序结果输入数据编辑程序的工作结果是ASCII码形式的源程序。编译程序以ASCII码形式的源程序为输入,它的工作结果是二进制形式的目标程序,但并未包括用户程序中所使用的系统函数的目标代码。从整体上来看,程序是不完整的,程序中的
8、部分地址尚未确定(例系统函数的调用)。
此文档下载收益归作者所有