考虑以下三个地址代码的中间程序
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
B)
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) A
(B) B
(C) C
(D) D答案: (B)
说明:根据静态单个分配
- 一个变量不能在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仅是正确的选项。
这个问题的测验