如下是一个带有数组引用和赋值的三地址代码序列 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-15 18:07:37 浏览: 57
根据给定的三地址代码序列,可以构建以下DAG:
```
+-------+
| a |
+-------+
/ | \
/ | \
/ | \
+------+ +------+ +------+
| i | | j | | b |
+------+ +------+ +------+
| | |
| | |
| | |
+------+ +------+ +------+
| r | | s | | t |
+------+ +------+ +------+
| | |
| | |
| | |
+------+ +------+ +------+
| u | | v | | c |
+------+ +------+ +------+
| | |
| | |
| | |
+------+ +------+ +------+
| w | | x | | y |
+------+ +------+ +------+
|
|
+------+
| z |
+------+
|
|
+------+
| b |
+------+
```
我们可以发现,节点a、节点i、节点j、节点b分别对应着数组a、数组下标i、数组下标j、数组元素b。在该DAG中,节点a、节点i、节点j、节点b都只有一个后继节点,并且它们都是被赋值语句所使用。因此,它们的序对应该是标记同一个节点。在本题中,只有选项D的序对是标记同一个节点。