编译技术:第01章 编译概述

上传人:hs****ma 文档编号:568781502 上传时间:2024-07-26 格式:PPT 页数:30 大小:609KB
返回 下载 相关 举报
编译技术:第01章 编译概述_第1页
第1页 / 共30页
编译技术:第01章 编译概述_第2页
第2页 / 共30页
编译技术:第01章 编译概述_第3页
第3页 / 共30页
编译技术:第01章 编译概述_第4页
第4页 / 共30页
编译技术:第01章 编译概述_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《编译技术:第01章 编译概述》由会员分享,可在线阅读,更多相关《编译技术:第01章 编译概述(30页珍藏版)》请在金锄头文库上搜索。

1、第一章编译概述Zhou, Erqiang引言从语言说起从语言说起汉语、英语汉语、英语=自然语言自然语言旗语、哑语旗语、哑语=人工语言人工语言C C语言、语言、JavaJava程序设计语言程序设计语言=计算机语言计算机语言=人工语言人工语言为什么需要计算机语言?为什么需要计算机语言?人与计算机进行人与计算机进行“交流交流”告诉计算机告诉计算机“做什么做什么”和和“怎么做怎么做”人们之间交流人们之间交流思想的工具思想的工具2School of Information and Software EngineeringZhou, Erqiang引言程序设计语言程序设计语言机器语言(机器语言(Machi

2、ne Code / Machine LanguageMachine Code / Machine Language)能够被能够被CPUCPU直接理解并运行直接理解并运行直接和硬件相关直接和硬件相关指令op1op200 r/m8r801 r/m16/32r16/3202 r8r/m803 r16/32r/m16/3204 ALimm805 EAXimm16/32op1 = op1+op2 指令集指令集3School of Information and Software EngineeringZhou, Erqiang引言程序设计语言程序设计语言机器语言(机器语言(Machine Code /

3、Machine LanguageMachine Code / Machine Language)难写、难懂难写、难懂改进:指令符号化改进:指令符号化例如:例如:00,01,02,03,05 = ADD00,01,02,03,05 = ADD汇编语言汇编语言解决了一小部分问题解决了一小部分问题依然和机器相关,指令级编写、读取依然和机器相关,指令级编写、读取机器机器不能不能直接运行直接运行汇编程序汇编程序:汇编语言程序:汇编语言程序=机器语言程序机器语言程序低 级 语 言4School of Information and Software EngineeringZhou, Erqiang引言程序

4、设计语言程序设计语言高级语言高级语言直观、自然、易于理解直观、自然、易于理解易读,易写,易于交流、存档易读,易写,易于交流、存档独立于机器的独立于机器的, ,易于移植易于移植高级语言高级语言=低级语言低级语言编译程序编译程序/ /编译器编译器解释程序解释器解释程序解释器5School of Information and Software EngineeringZhou, Erqiang引言解释器解释器源程序源程序数据数据输出输出编译器编译器源程序源程序数据数据可执行可执行文件文件输出输出在线在线离线离线6School of Information and Software Engineeri

5、ngZhou, Erqiang引言程序设计语言程序设计语言编写一个高级语言的编译或解释程序编写一个高级语言的编译或解释程序对该语言的实现对该语言的实现编译还是解释?编译还是解释?PascalPascal、C/C+C/C+、Object-CObject-C、JavaJava、C#C#、GoGo编译的:编译的:FortranFortran、ValaVala解释的:解释的:PythonPython、JavaScriptJavaScript、PHPPHP等等7School of Information and Software Engineering编译的步骤词法分析词法分析中间代码生成中间代码生成语

6、法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成源程序机器代码Zhou, Erqiang8School of Information and Software Engineering编译的步骤词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成源程序机器代码分析分析(前端)(前端)Zhou, Erqiang9School of Information and Software Engineering编译的步骤词法分析词法分析中间代码生成中间代码生成语

7、法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成源程序机器代码合成合成(后端)(后端)Zhou, Erqiang10School of Information and Software Engineeringwhilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成实例Zhou, Erqiang11School of Information and Software Engi

8、neering词法分析whilewhile (y z) intint x = a + b;y += x;T_WhileT_WhileT_LeftParenthesesT_LeftParenthesesT_Identifier yT_Identifier yT_LessT_LessT_Identifier zT_Identifier zT_RightParenthesesT_RightParenthesesT_OpenBraceT_OpenBraceT_Identifier yT_Identifier yT_PlusAssignT_PlusAssignT_Identifier xT_Identi

9、fier xT_SemicolonT_SemicolonT_CloseBraceT_CloseBraceT_IntT_IntT_Identifier xT_Identifier xT_AssignT_AssignT_Identifier aT_Identifier aT_PlusT_PlusT_Identifier bT_Identifier bT_SemicolonT_Semicolon词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成Zhou, Erqiang12School of Informa

10、tion and Software Engineering语法分析whilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成while顺序yz=x+ab+yx=yZhou, Erqiang13School of Information and Software Engineering语义分析whilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语

11、义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成while顺序yz=x+ab+yx=yintintintintintintintintintintintboolvoidvoidintZhou, Erqiang14School of Information and Software Engineering中间代码生成whilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成ifif y z g

12、oto where_true;gotogoto where_false;t1 = a + b;x = t1t2 = x + y;y = t2gotogoto Loop; where_truewhere_true: Loop Loop:where_falsewhere_false:Zhou, Erqiang15School of Information and Software Engineering中间代码优化whilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码

13、优化目标代码优化目标代码生成目标代码生成ifif y z goto where_true;gotogoto where_false;t1 = a + b;x = t1t2 = x + y;y = t2gotogoto Loop; Loop Loop:t1 = a + b;t1 = a + b;x = t1x = t1Zhou, Erqiang16School of Information and Software Engineeringwhere_truewhere_true:where_falsewhere_false:目标代码生成MIPS Instructions MeaningMIPS

14、Instructions Meaningaddadd $s1,$s2,$s3 $s1,$s2,$s3 $s1 = $s2 + $s3$s1 = $s2 + $s3subsub $s1,$s2,$s3 $s1,$s2,$s3 $s1 = $s2 $s1 = $s2 $s3 $s3bnebne $s4,$s5,Label $s4,$s5,Label 下一条指令在下一条指令在 Label if $s4 $s5Label if $s4 $s5 beqbeq $s4,$s5,Label $s4,$s5,Label 下一条指令在下一条指令在 Label if $s4 = $s5Label if $s4 =

15、 $s5 j j Label Label 下一条指令在下一条指令在 LabelLabelsltslt $t1,$s2,$s3 $t1,$s2,$s3 if $s2 $s3, $t1 = 1 else $t1 = 0if $s2 $s3, $t1 = 1 else $t1 = 0Zhou, Erqiang17School of Information and Software Engineeringslt: Set on less than目标代码生成whilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析

16、语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成add add $x, $a, $b$x, $a, $bsltslt $_t1, $y, $z $_t1, $y, $zbeqbeq $_t1, 1, where_true $_t1, 1, where_truej j where_falsewhere_falseaddadd $y, $x, $y$y, $x, $yj j Loop Loopwhere_truewhere_true: Loop Loop:where_falsewhere_false:Zhou, Erqiang18School of Informat

17、ion and Software Engineering目标代码生成whilewhile (y z) intint x = a + b;y += x;词法分析词法分析中间代码生成中间代码生成语法分析语法分析语义分析语义分析中间代码优化中间代码优化目标代码优化目标代码优化目标代码生成目标代码生成add $x, $a, $badd $x, $a, $bsltslt $_t1, $y, $z $_t1, $y, $zbeqbeq $_t1, 1, where_true $_t1, 1, where_truej j where_falsewhere_falseaddadd $y, $x, $y$y,

18、$x, $yj Loopj Loop Loop Loop:blt $y, $z, where_trueblt $y, $z, where_trueZhou, Erqiang19School of Information and Software Engineeringwhere_truewhere_true:where_falsewhere_false:关于“绑定”实体:程序的组成部分实体:程序的组成部分变量、表达式、函数等变量、表达式、函数等属性:实体具有的特性属性:实体具有的特性变量名、变量的类型、函数名、函数的参数变量名、变量的类型、函数名、函数的参数绑定绑定实体与其属性建立某种联系的过

19、程称为绑定实体与其属性建立某种联系的过程称为绑定实际上就是建立了某种约束实际上就是建立了某种约束Zhou, Erqiang20School of Information and Software Engineering是否要保存实体与属性的绑定信息?是否要保存实体与属性的绑定信息?哪些地方需要保存?哪些地方需要保存?如何保存?如何保存?需要检查需要检查 变量是否被声明或声明多次变量是否被声明或声明多次 变量在声明前被赋值或被引用变量在声明前被赋值或被引用 操作符与变量类型兼容操作符与变量类型兼容 等等等等需要数据结构保存实体属性信息需要数据结构保存实体属性信息 符号表符号表符号表Zhou, E

20、rqiang21School of Information and Software Engineeringint a;b = 1;a = “hello”;哪些地方需要?哪些地方需要? 编译器:源程序语义检查编译器:源程序语义检查 目标文件、库文件:目标文件、库文件: 例如例如函数名函数名与与地址地址的对应的对应 将多个目标文件将多个目标文件链接链接为可执行文件为可执行文件 可执行文件:可执行文件: 调试时由调试时由地址地址得到得到实体名实体名符号表Zhou, Erqiang22School of Information and Software Engineering符号表的形式符号表的形式

21、 每个每个名字名字对应一个对应一个表项表项 一个表项包括一个表项包括名字域名字域和和信息域信息域 (key, value)(key, value)符号表的实现符号表的实现 线性表、线性表、HashHash表表名字名字属性信息属性信息符号表Zhou, Erqiang23School of Information and Software Engineering属性域属性域 多个多个子域子域及及标志位标志位单词记号:标识符、数字、符号单词记号:标识符、数字、符号标识符标识符:变量?函数名?标号变量?函数名?标号?变量变量:类型?有初值?:类型?有初值?函数函数:返回类型?参数个数、类型等:返回类型

22、?参数个数、类型等标号标号:标号地址、转移地址:标号地址、转移地址符号表Zhou, Erqiang24School of Information and Software Engineering名字域:名字多长?名字域:名字多长?名字域如何实现?名字域如何实现? 直接存储:直接存储: 每个标识符分配最大允许空间每个标识符分配最大允许空间 间接表技术间接表技术 名字域存放指针名字域存放指针 符号表Zhou, Erqiang25School of Information and Software EngineeringMicrosoft: the first 2048 charactersGCC:

23、 no limit出错处理为什么需要出错处理?为什么需要出错处理? 编译各个阶段都可能发现错误编译各个阶段都可能发现错误出错处理的内容出错处理的内容 报告错误的报告错误的性质性质、位置位置 尽量缩小范围、查找出更多的错误尽量缩小范围、查找出更多的错误Zhou, Erqiang26School of Information and Software Engineering编译器的结构词法分析词法分析语法分析语法分析单词符号串单词符号串语法树语法树语义分析和中间代码生成语义分析和中间代码生成中间代码中间代码优化优化经优化的中间代码经优化的中间代码代码生成代码生成源程序源程序目标程序目标程序源程序的

24、分析源程序的分析目标程序的合成目标程序的合成符符号号表表管管理理出出错错处处理理Zhou, Erqiang27School of Information and Software Engineering(可执行)(可执行)( (多个源程序文件多个源程序文件) )完完整整的的程程序序处处理理过过程程预处理器预处理器编译器编译器源程序源程序汇编语言程序汇编语言程序汇编器汇编器目标程序目标程序( (可重定位可重定位) )连接器、装入器连接器、装入器目标程序目标程序源程序源程序库程序库程序Zhou, Erqiang28School of Information and Software Enginee

25、ringZhou, ErqiangTHE ENDQUESTIONS29School of Computer Science and Engineering School of Information and Software EngineeringZhou, ErqiangThink About it!The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound on

26、e, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made.30School of Information and Software Engineering

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号