
第一章绪论什么是编译
什 么 是 编 译 第一章 绪论

计算机程序设计语言及编译类似于数学定义或自然语言的简洁形式接近人类表达习惯高级语言X=2》不依赖于特定机器(High Level Language)编享效率高编译引入助记符(Compiling)依赖于特定机器编译汇编语言非计算机专业人员MOVX.2(AssemblyLanguage)(Compiling使用受限制编享效率依然很低汇编可以被计算机直接理解(Assembling)与人类表达习惯机器语言相去甚远C70600000002(Machine Language)难记忆》难编写、难阅读易写错
引入助记符 可以被计算机直接理解 计算机程序设计语言及编译 机器语言 (Machine Language ) 汇编语言 (Assembly Language ) 高级语言 ( High Level Language ) 汇编 (Assembling) 编译 (Compiling) C706 0000 0002 MOV X, 2 x = 2 接近人类表达习惯 不依赖于特定机器 编写效率高 类似于数学定义或 自然语言的简洁形式 与人类表达习惯 相去甚远 难记忆 难编写、难阅读 易写错 依赖于特定机器, 非计算机专业人员 使用受限制 编写效率依然很低 编译 (Compiling)

计算机程序设计语言及编译高级语言X=2(HighLevel Language)编译(Compiling)编译汇编语言MOVX.2(AssemblyLanguage)(Compiling)汇编(Assembling)机器语言C70600000002(MachineLanguage)编译:将高级语言翻译成汇编语言或机器语言的过程源语言目标语言
编译:将高级语言翻译成汇编语言或机器语言的过程 源语言 目标语言 计算机程序设计语言及编译 机器语言 (Machine Language ) 汇编语言 (Assembly Language ) 高级语言 ( High Level Language ) 汇编 (Assembling) 编译 (Compiling) C706 0000 0002 MOV X, 2 x = 2 编译 (Compiling)

编译器在语言处理系统中的位置源程序预处理器(Preprocessor)经过预处理的源程序把存储在不同文件中的源程序聚合在一起编译器把被称为宏的缩写语汇编语言程序句转换为原始语句汇编器(Assembler)可重定位的机器代码链接器(Linker)/加载器(Loader)目标机器代码
编译器在语言处理系统中的位置 预处理器 (Preprocessor) 源程序 编译器 经过预处理的源程序 汇编语言程序 链接器 (Linker) /加载器 (Loader) 可重定位的机器代码 目标机器代码 把存储在不同文件中 的源程序聚合在一起 把被称为宏的缩写语 句转换为原始语句 汇编器 (Assembler)

编译器在语言处理系统中的位置源程序预处理器(Preprocessor)经过预处理的源程序编译器加载器:可重定位(Relocatable):汇编语言程序修改可重定位地址;在内存中存放的起始将修改后的指令和数据位置L不是固定的汇编器(Assembler)放到内存中适当的位置可重定位的机器代码链接器(Linker)/加载器(Loader)目标机器代码起始位置+相对地址一绝对地址
可重定位(Relocatable): 在内存中存放的起始 位置L不是固定的 起始位置 +相对地址=绝对地址 预处理器 (Preprocessor) 源程序 编译器 经过预处理的源程序 汇编语言程序 链接器 (Linker) /加载器 (Loader) 可重定位的机器代码 目标机器代码 汇编器 (Assembler) 编译器在语言处理系统中的位置 加载器: 修改可重定位地址; 将修改后的指令和数据 放到内存中适当的位置

编译器在语言处理系统中的位置源程序预处理器(Preprocessor)经过预处理的源程序链接器编译器将多个可重定位的机器代码文件(包括库文件)汇编语言程序连接到一起汇编器(Assembler)解决外部内存地址问题S可重定位的机器代码库文件链接器(Linker)/加载器(Loader其它可重定位目标程序目标机器代码
库文件 其它可重定位目标程序 链接器 将多个可重定位的机器 代码文件(包括库文件) 连接到一起 解决外部内存地址问题 编译器在语言处理系统中的位置 预处理器 (Preprocessor) 源程序 编译器 经过预处理的源程序 汇编语言程序 链接器 (Linker) /加载器 (Loader) 可重定位的机器代码 目标机器代码 汇编器 (Assembler)

第一章绪论编译系统的结构
编 译 系统的结构 第一章 绪论

59call sc60OVal,[31-1]编译系统的结构61callsc62[s1]NOVal,63call sc#include64mOVal,int nain()65call ac66ret167 storechr endpint a,b,ge,shi,bai,m,n,i,number;60消屏,无入口参效printf("请输入(输入完两个数按一次回车键):In");69clearcrtprocnearscanf("%d%d,&a,&b);70OVax,0600h71bh,07hwhile(at=0,b!=0)mOV72cx,o0nOVscanf("%d%d",&a,&b);73BOV184thdx,if(a>=100,bb)retn=b,n=a;ertendp入口警数,行数noT.elseproc near,no:vordm=a,n=b:cx,no机器是怎么翻译的?for(i-n;i<-n;""O2cx,-bai=i/1o;.endit.repeatshi-(i%100)/1084ah,02hnoVge=i%10;85moVdl,crif(i=-bai*bai*bai+shi*shi*shi+ge*ge)8621hineprintf("%5d",i);8702hnovah,O.0BOVdl,1tnunber++;O8921hintprintf("n");90-untslcxs91retif(nunber==)9znextlien endp93printf("no\n");end94编译器汇编语言程序/机器语言程序高级语言程序
编译系统的结构 高级语言程序 编译器 汇编语言程序/机器语言程序 机器是怎么翻译的?

人工英汉翻译的例子在房间里,他用锤子砸了一扇窗户In therooml.hebrokewindowa状语主语谓语补语宾语目标语言句子源语言句子第2步第1步句子的语义生成目标语言分析源语言语义分析(SemanticAnalvsis)山XAGENTOBJECTLOCATIONTOOL中间表示,独立于具体的语言
In the room , he broke a window with a hammer 人工英汉翻译的例子 ~~~~~~~~~~~ [ ] 在房间里,他用锤子砸了一扇窗户。 中间表示, 独立于具体的语言 状语 主语 谓语 宾语 补语 第1步 分析源语言 源语言句子 句子的语义 第2步 生成目标语言 目标语言句子 语义分析(Semantic Analysis)

人工英汉翻译的例子代词动词冠词名词介词 冠词名词介词冠词名词★+1++LIn theroom]hebrokewindowa主语谓语状语补语宾语名短名短介短动短介短源语言句子目标语言句子第2步第1步句子的语义分析源语言生成目标语言语义分析(SemanticAnalysis)语法分析(SvntaxAnalysis)词法分析(LexicalAnalysis)
In the room , he broke a window with a hammer 介短 名短 动短 名短 介短 语法分析(Syntax Analysis) 词法分析(Lexical Analysis) 介词 冠词 名词 代词 动词 冠词 名词 介词 冠词 名词 ~~~~~~~~~~~ [ ] 状语 主语 谓语 宾语 补语 第1步 分析源语言 源语言句子 句子的语义 第2步 生成目标语言 目标语言句子 语义分析(Semantic Analysis) 人工英汉翻译的例子