【属性语法】包含一个语法和一系列语义规则。
【中间代码】 目标代码的中间表示。
【编译中常用的中间代码】后缀表达式、树形表示、三元式、四元式
后缀表达式除去了原表达式中的括号,并将运算对象写在前面,运算符写在后面,因而称为后缀式。
用【栈】计算后缀表达式
第七章
【三元式】(OP,arg1, arg2)
其中OP是运算符,arg1,arg2分别是第一和第二两个运算对象。
特点: 三元式出现的顺序和语法成份的计值顺序相一致。
【间接三元式】
(1)间接三元式表: 用来存放各三元式本身。
(2)间接码表: 按执行各三元式的顺序,依次列出各三元式在三元式表中的位置。
【注意】 : 间接三元式表中不存放重复的三元式。
【四元式】(OP,arg1, arg2, result)
result是编译程序为存放中间运算结果而临时引进的变量,常称为临时变量
【三地址代码形式】result := arg1 OP arg2
三地址语句:语句中是三个量的赋值语句, 每个量占一个地址。
题型:【解】写出四元式以及四元式所对应的三地址序列【也不存放重复的】
【将布尔表达式表示为四元式】
布尔表达式是由布尔算符(∧、∨和非)施于布尔变量或关系表达式而成。
【运算符的优先级】
首先 * ,/,+ -, =
其次是 > , < , >= , <=
最后是 非,∧,∨
相同优先级的从左到右写出
【目标代码】
题型:将三地址句子x = y + z翻译成目标代码
【二地址指令】
二地址指令: op 源,目的
MOV {将源移到目的中}
ADD {将源加到目的中}
SUB {在目的中减去源}
【代码优化原则】