考虑以下三个地址代码中的中间程序
p = a - b
q = p * c
p = u * v
q = p + q
以下哪一项对应于上述代码中的静态单一赋值
一种)
p1 = a - b
q 1 = p1 * c
p1 = u * v
q1 = p1 + q1
乙)
p3 = a - b
q4 = p3 * c
p4 = u * v
q5 = p4 + q4
C)
p 1 = a - b
q1 = p2 * c
p3 = u * v
q2 = p4 + q3
D)
p1 = a - b
q1 = p * c
p2 = u * v
q2 = p + q
(一) A
(乙)乙
(C)丙
(四)丁答案:(乙)
说明:根据静态单赋值
- 一个变量不能在 LHS 中多次使用
- 一个变量应该最多初始化一次。
现在查看给定的选项
- a – 代码违反条件 1,因为 p1 在此语句中再次初始化: p1 = u * v
- c- 代码无效,因为 q 1 = p 2 * c , q 2 = p 4 + q 3 – 在这些语句中 p 2 , p 4 , q 3未在任何地方初始化
- d- 代码无效,因为 q 2 = p + q 在不将其移至寄存器的情况下是不正确的
因此,选项 B只是正确选项。
这个问题的测验