编译原理——绪论

DREAMSJR 发布于 2024-03-18 905 次阅读


机器语言:能够被计算机的硬件系统直接执行的指令程序

编译语言:将硬件指令用一些助记符表示,即符号化的机器语言“ADD,MOV”

高级语言:从程序员的角度,对汇编语言进一步抽象,使用便于理解的自然语言表述

高级语言的编译实现:

高级语言的解释实现:

解释器和编译器

解释器是执行系统,编译器是转换系统

基于解释执行的程序可以动态修改自身,基于编译执行的程序不易胜任

基于解释方式有利于人机交互

解释器执行速度比编译器慢

解释器需要保存的信息多,空间开销大

二者的实现技术相似

高级语言的实现

转换方式:已经有B语言的编译器,可以把A语言转换为B语言,用B语言已有的编译器去编译执行

编译程序的组成

词法分析:识别由字符组成的高级语言中的单词,并将其转换成一种内部表示的形式,同时检查是否存在词法错误。

语法分析:根据语言定义的语法规则来验证程序是否存在语法错误。

语义分析:检查源程序有无语义错误,为代码生成阶段收集类型信息。

中间代码生成:将源程序转换成一种称为中间代码的内部表示形式,便于优化和移植

中间代码优化:变换或者改造中间代码,使生成的目标代码更为高效,节省空间和时间。

目标代码生成:将中间代码转换为特定机器上的指令代码或者汇编指令代码

错误处理:当编译阶段出现错误时,由相应的错误处理模块给出解决方案,使编译器能够继续进行下去

表格管理:为了合理的管理表格,设立一些专门子程序称为表格管理程序。

编译程序的设计

编译程序的分遍,对源程序或源程序的中间表示形式从头到尾扫描一次,并作加工处理,生成新的中间结果或目标程序

分遍:对源程序或源程序的中间表示形式,从头到尾扫描几次。

分遍的原因,本课的分遍策略

注意的问题

准确的理解源语言

确定编译要求

确定目标语言

分遍

具体设计

此作者没有提供个人介绍
最后更新于 2024-03-18