欢迎来到天天文库
浏览记录
ID:21795322
大小:630.50 KB
页数:35页
时间:2018-10-20
《程序设计语言 编译原理(第三版)第1章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理于静洋yjy@henu.edu.cn程序设计语言第一章引论1.1什么叫编译程序1.2编译过程概述1.3编译程序的结构1.4编译程序与程序设计环境(略)1.5编译程序的生成1.什么是编译程序?1.1什么叫编译程序翻译程序:一种语言程序---------->另一种语言程序源语言目标语言编译程序:高级语言程序---------->低级语言程序汇编程序:汇编语言程序---------->机器语言程序解释程序:源语言程序---------->边解释边执行(1)编译方式:先编译后执行。(2)解释方式:以源程序作为输入,但不产生目标代码,而是边解释
2、边执行源程序本身。2.“高级语言程序”的执行方式1.1什么叫编译程序编译和解释的主要区别:是否产生目标代码!3.“编译程序”在计算机系统中的位置较接近于“硬件”1.1什么叫编译程序4.发展20世纪50年代第一个编译程序——FORTRAN编译程序目前:编译原理与技术得到迅速发展,现已形成一套比较成熟的系统化的理论与方法,并开发出了一些好的编译程序的实现语言、环境与工具。当时普遍认为设计和实现编译程序是一件十分困难、令人生畏的事情1.1什么叫编译程序1.2编译过程概述Theelephantateanbanana.什么是语言?forK:=1to10
3、0dobeginM:=I+10*K;N:=J+10*Kend一.类比自然语言翻译和编译过程英→汉编译的工作过程1)识别单词……………………………………………词法分析2)分析句子语法结构…………………………………语法分析3)根据句子含义初步翻译…………语义分析与中间代码产生4)修饰译文…………………………………………………优化5)写出最后译文…………………………………目标代码生成1.2编译过程概述1.词法分析forK:=1to100dobeginM:=I+10*K;N:=J+10*Kend基本字for标识符K赋值号:=常数1基本字to常数100
4、基本字do基本字begin......1.2编译过程概述词法分析——规则:规则描述工具:任务:依循词法规则.正规式和有限自动机(FA).输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词符号,如基本字、标识符、常数、算符、界符等。1.2编译过程概述2.语法分析forK:=1to100dobeginM:=I+10*K;N:=J+10*Kend规则:规则描述工具:任务:依循语法规则.上下文无关文法.在词法分析的基础上,根据语言的语法规则,对单词符号串进行语法分析,识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。1.
5、2编译过程概述3.语义分析和中间代码产生规则:规则描述工具:任务:语义规则属性文法两部分工作:1.对每种语法范畴进行静态语义检查;2.若语义正确,则进行中间代码翻译.对语法分析器识别出的各类语法单位,分析其含义并进行初步翻译(产生中间代码)。中间代码:一种独立于具体硬件的记号系统,更接近于机器代码1.2编译过程概述forK:=1to100dobeginM:=I+10*K;N:=J+10*Kend;K:=1L1:if1006、间代码:三地址代码具体实现:三元式,四元式,间接三元式1.2编译过程概述K:=1L1:if1007、代码等1.2编译过程概述序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=j<*+*++j110010I10JKKKT1KT21K(9)T1MT2NK(2)序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=:=:=j<+++jII1100MNKK10101MNK(9)MNK(2)优化前优化后1.2编译过程概述任务:把中间代码变换成特定机器上的低级语言代码,实现最后的翻译。5.目标代码生成绝对指令代码/可重定位的指令代码/汇编指令代码有赖于硬件系统结构和机8、器指令含义1.2编译过程概述1.3编译程序的结构一.编译程序总框图1.表格管理编译各阶段都要涉及到构造、查找或更新有关表格。表格的作用:登记源程序的各类信息和编译
6、间代码:三地址代码具体实现:三元式,四元式,间接三元式1.2编译过程概述K:=1L1:if1007、代码等1.2编译过程概述序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=j<*+*++j110010I10JKKKT1KT21K(9)T1MT2NK(2)序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=:=:=j<+++jII1100MNKK10101MNK(9)MNK(2)优化前优化后1.2编译过程概述任务:把中间代码变换成特定机器上的低级语言代码,实现最后的翻译。5.目标代码生成绝对指令代码/可重定位的指令代码/汇编指令代码有赖于硬件系统结构和机8、器指令含义1.2编译过程概述1.3编译程序的结构一.编译程序总框图1.表格管理编译各阶段都要涉及到构造、查找或更新有关表格。表格的作用:登记源程序的各类信息和编译
7、代码等1.2编译过程概述序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=j<*+*++j110010I10JKKKT1KT21K(9)T1MT2NK(2)序号OPARG1ARG2RESULT(1)(2)(3)(4)(5)(6)(7)(8)(9):=:=:=j<+++jII1100MNKK10101MNK(9)MNK(2)优化前优化后1.2编译过程概述任务:把中间代码变换成特定机器上的低级语言代码,实现最后的翻译。5.目标代码生成绝对指令代码/可重定位的指令代码/汇编指令代码有赖于硬件系统结构和机
8、器指令含义1.2编译过程概述1.3编译程序的结构一.编译程序总框图1.表格管理编译各阶段都要涉及到构造、查找或更新有关表格。表格的作用:登记源程序的各类信息和编译
此文档下载收益归作者所有