编译原理 上海交通大学 张冬茉 Emails Zhang-dm acs sjtu. edu.cn 2004年2月
1 编译原理 上海交通大学 张冬茉 Email: zhang-dm@cs.sjtu.edu.cn 2004年2月
课程目的 编译原理是计算机专业设置的一门 重要的专业课程。虽然只有少数人 从事编译方面的工作,但是这门课 在理论、技术、方法上都对学生提 供了系统而有效的训练,有利于提 高软件人员的素质和能力
2 课程目的 编译原理是计算机专业设置的一门 重要的专业课程。虽然只有少数人 从事编译方面的工作,但是这门课 在理论、技术、方法上都对学生提 供了系统而有效的训练,有利于提 高软件人员的素质和能力
第一章引论 §1.1编译程序是一种特定的翻译程序 计算( computing):描述"计算"( computing)过程通常借 助于一种程序设计语言,这种"计算过程包含了从初始状态转 变为终止状态的一系列的操作。 翻译( translation)和翻译程序( translator):描述算法的语 言可有很多种,将一种语言写的程序转换成另一种语言写的程 序,这就是翻译( translation),实现这种功能的程序便是翻 译程序 translator),显然翻译前的程序与翻译后的程序两者应 等价。 3
3 第一章 引 论 §1.1 编译程序是一种特定的翻译程序 •计算(computing):描述"计算"(computing)过程通常借 助于一种程序设计语言,这种"计算"过程包含了从初始状态转 变为终止状态的一系列的操作。 •翻译(translation)和翻译程序(translator) :描述算法的语 言可有很多种,将一种语言写的程序转换成另一种语言写的程 序,这就是翻译(translation),实现这种功能的程序便是翻 译程序(translator),显然翻译前的程序与翻译后的程序两者应 等价
源程序( source code)和目标程序( object code):翻译前的程 序为源语言程序,简称源程序( (source code),翻译后的程序 为目标语言程序,简称目标程序( object code) 汇编程序:将可直接执行的机器语言的指令系统符号化, 这便是汇编语言,当然汇编语言程序也必须转换成机器语 言程序才能执行,这种转换程序便是汇编程序( assembly program)。汇编程序也是一种翻译程序 编译程序( compiler):将高级语言程序翻译成低级语言程 序,这种翻译程序,便是编译程序( compiler)。显然编译程 序是翻译程序中的一类。 解释程序( interpreter):解释执行是将源程序中的语句按 动态顺序,逐句逐段翻译成可执行代码,一旦具备执行条 件(获得必要的初始数据等)立即将这一段代码执行得到部 分结果。完成这样功能的程序称为解释程序( interpreter) 4
4 •源程序(source code)和目标程序(object code):翻译前的程 序为源语言程序,简称源程序(source code),翻译后的程序 为目标语言程序,简称目标程序(object code)。 •汇编程序:将可直接执行的机器语言的指令系统符号化, 这便是汇编语言,当然汇编语言程序也必须转换成机器语 言程序才能执行,这种转换程序便是汇编程序(assembly program)。汇编程序也是一种翻译程序。 •编译程序(compiler):将高级语言程序翻译成低级语言程 序,这种翻译程序,便是编译程序(compiler)。显然编译程 序是翻译程序中的一类。 •解释程序(interpreter):解释执行是将源程序中的语句按 动态顺序,逐句逐段翻译成可执行代码,一旦具备执行条 件(获得必要的初始数据等)立即将这一段代码执行得到部 分结果。完成这样功能的程序称为解释程序(interpreter)
源程序S 译程序C 目标程序T (以高级语言写) (以机器语言 编译阶段 初始数据 计算结果 杨运行系统 运行阶段 图1.1程序的编译执行 目标程序T 汇编程序A 日标程序T (以汇编语言写) (以机器语言写) 图12汇编阶段 源程序S (以高级语言写) 解释程序 计算结果 初始数据 图1.3程序的解释执行
5 源程序 S (以高级语言写) ) 目标程序 T (以机器语言写) ) 计算机 编译程序 C 编译阶段 初始数据 计算结果 计算机 目标程序 T 运行阶段 运行系统 图1.1 程序的编译执行 目标程序T’ (以汇编语言写) ) 目标程序 T (以机器语言写) ) 计算机 汇编程序 A 图1.2 汇编阶段 源程序 S (以高级语言写) ) 计算机 计算结果 解释程序I 图1.3 程序的解释执行 初始数据