什么是三地址码语句的实现?
三地址码语句有三种实现方式,如下所示:
- 四元式
- 三元式
- 间接三元式
四元式
四元式是一种最多包含四个字段的结构,即运算符、参数 1、参数 2 和结果。
运算符 | 参数 1 | 参数 2 | 结果 |
对于语句 a = b + c,四元式表示将 + 放入运算符字段,a 放入参数 1 字段,b 放入参数 2,c 放入结果字段。
例如:考虑语句
a = b + c * d
首先,将此语句转换为三地址码
∴ 三地址码将为
t1 = c ∗ d
t2 = b + t1
a = t2。
构建三地址码后,它将转换为如下所示的四元式表示:
四元式
位置 | 运算符 | 参数 1 | 参数 2 | 结果 |
---|---|---|---|---|
(0) | * | c | d | t2 |
(1) | + | b | t1 | t1 |
(2) | = | t2 | A |
参数 1、参数 2 和结果字段的内容是指向由这些条目表示的名称的符号表条目的指针。
三元式
这种三地址码表示包含三个 (3) 个字段,即一个用于运算符,两个用于参数(即参数 1 和参数 2)
运算符 | 参数 1 | 参数 2 |
在这种表示中,不使用临时变量。我们使用括号中的数字来表示指向符号表中该特定记录的指针,而不是临时变量。
例如,考虑语句
a = b + c * d
首先,它将被转换为三地址码
∴ t1 = c ∗ d
t2 = b + t1
a = t2
此三地址码的三元式将为:
三元式
位置 | 运算符 | 参数 1 | 参数 2 |
---|---|---|---|
(0) | ∗ | C | d |
(1) | + | B | (0) |
(2) | = | A | (1) |
这里 (0) 表示一个指针,它引用结果 c * d,可以在后续语句中使用,即当 c * d 与 b 相加时。此结果将保存在 (1) 指向的位置。指针 (1) 将在将其分配给 a 时进一步使用。
间接三元式
间接三元式表示使用一个额外的数组来按所需的顺序列出指向三元式的指针。这称为间接三元式表示。
间接三元式将为
在此,它只需要引用指针 (0)、(1)、(2),它们将分别进一步引用指针 (11)、(12)、(13),然后指针 (11)、(12)、(13) 指向三元式,这就是为什么这种表示称为间接三元式表示。
广告