如下是一个带有数组引用和赋值的三地址代码序列 r = a[i] s = a[j] t = a[i] a[j] = b u = a[i] v = a[j] a[j] = c w = a[i] x = a[j] y = a[i] z = a[j] a[j] = b 为该序列指令构造DAG,下列选项中,哪一项的序对会是标记同一个节点?
时间: 2023-12-12 17:05:00 浏览: 54
根据三地址代码序列,可以得到如下的DAG图:
```
r,s,t u,v w,x y,z
| | | |
| | | |
a[i]--------a[j]--------a[j]--------a[j]
|\ |\ |\ |
| \ | \ | \ |
| \ | \ | \ |
| \ | \ | \ |
| \ | \ | \ |
b c b c b c b
```
根据DAG图,可以看出:
- 序对(r, s)、(t, u)、(v, w)、(x, y)、(z, b) 会被标记为同一个节点。因为它们都是对同一个数组元素的引用,而且没有其他节点依赖于它们。
- 序对(r, t)、(s, a[j])、(u, a[i])、(v, a[j])、(w, a[i])、(x, a[j])、(y, a[i])、(z, a[j])、(b, c) 会被标记为不同节点。因为它们都是对不同的数组元素的引用或赋值,或者是对其他节点的依赖。
阅读全文