什么是三地址码?
三地址代码是 A−=B op C 形式的语句序列,其中 A、B、C 是程序员定义的名称、常量或编译器生成的临时名称,op 表示一个可以被常量或浮点算术运算符或布尔值数据或逻辑运算符。之所以叫“三地址码”,是因为每条语句一般都包含三个地址,两个用于操作数,一个用于结果。
在三地址代码中,任何语句最多定义三个地址。两个地址用于操作数,一个用于结果。
因此, op 是一个运算符。
表达式右侧一次只允许一个操作。
示例- 表达式 a = b + c + d 可以转换为以下三地址代码。
t1 = b + c
t2 = t1 + d
a = t2
其中 t1 和 t2 是编译器生成的临时变量。大多数情况下,一个语句包含少于三个引用,但它仍被称为三地址语句。
三地址码语句的类型
以下是各种类型的三个地址语句 -
赋值- 三种类型的赋值语句是
x = y op z , op 是以 y, z 为操作数的二元运算符。
x = op y , op 是一元运算符
x = y,将 y 的值分配给 x。
无条件跳转- 无条件跳转的形式为 goto L,L 是一个标签。
控制流向标记为 L 的三个地址语句。
条件跳转- 条件跳转的形式为
if x relop y goto L
这里 relop 可以是 <、>、<=、>=。如果条件为真,那么它可以在执行if语句之后的Label L else语句处执行三个地址语句。
数组语句-
x = y[i],将数组 y 的 ithlocation 的值分配给 x。
x[i] = y,y 的值被赋值给数组 x 的 ithlocation。
地址和指针分配- Pascal 和 C 等语言允许指针分配。
x = & y,y 的地址分配给 x。
x = * y,将 y 指向的位置的内容分配给 x。
*x=y,最后将 x 指向的对象的 r 值设置为 y 的 r 值。
过程调用/返回- 使用参数 x 1 , x 2 ...调用过程 P(x 1 , x 2 ... . . x n ) 。. x n写为
参数 x 1
参数 x 2
…………..
参数 x n
调用 p, n
这里param指的是参数,&调用p,n会调用过程p,有n个参数。
以上是 什么是三地址码? 的全部内容, 来源链接: utcz.com/z/363438.html