前言
编译过程
文字描述:词法分析→语法分析→中间代码产生→优化→目标代码产生
词法分析
目的:从无意义的字符串到有意义的单词串
基本字等同于关键词
语法分析
目的:从单词串到语法单位
上图中的语法规则:运算符和两边的标识符或常量表达式,形成一个算术表达式.
赋值符和两边的表达式,形成赋值语句.
中间代码产生
目的:由语法分析产生三元式,四元式,树等指令.
例如上图的四元式指令,第1个元素是运算符,第2/3元素是操作数,第4个是结果存储单元(T1,T2)
优化
目标代码生成
目的:中间代码变成机器代码或者汇编代码,汇编代码将经由汇编器生成机器代码
可重定位指令代码:单独的模块,经编译生成机器代码加载入程序中
机器指令解读
蓝色的00和01,操作数地址,00表示地址,10表示立即数
当使用地址(00)时,表示后面的地址是一个相对地址.当操作系统在执行指令时,将该地址(R1)加上模块基地址(下面的L)值,加载到内存中
编译程序结构
由编译程序总框,表格管理,出错管理,遍,编译器前端和后端组成.
表格
出错处理
编译的前端和后端
体现的计算思维:分解和权衡
举例:Java语言的执行
编译程序与程序设计环境
程序设计环境可以简单理解为IDE(集成开发环境),IDE就是具体化的程序设计环境.
举例:visual studio
编译程序生成
自展技术:最初没有编译器的时候,只能用汇编语言或者机器语言来写.
第一种语言L1,最核心也是最小的内容.依次是L1+L2,直到L=L1+L2+....+Ln
编译程序要用高级语言来写,好处是易懂易维护.
编译程序自动产生