考虑以下代码段。
x = u - t;
y = x * v;
x = y + w;
y = t - z;
将上述代码段转换为静态单赋值形式所需的最少总变量数为
(一) 6
(乙) 8
(三) 9
(四) 10答案: (C)
说明:静态单赋值 (SSA)用于编译器设计中的中间代码。在静态单一赋值形式 (SSA) 中,对变量的每个赋值都应使用不同的名称指定。我们使用下标来区分变量的每个定义。
在给定的代码段中,变量 x 有两个赋值:
x = u - t;
x = y + w;
以及变量 y 的三个赋值:
y = x * v;
y = t - z;
所以我们使用两个变量 x1, x2 来指定 x 的不同赋值和 y1, y2 的每个赋值。因此,变量总数为 9(x1、x2、y1、y2、t、u、v、w、z)。
给定代码段的静态单赋值形式(SSA)是:
x1 = u - t;
y1 = x1 * v;
x2 = y1 + w;
y2 = t - z; ;
详情请参考以下链接
https://www.cs.cmu.edu/~fp/courses/15411-f08/lectures/09-ssa.pdf
这个问题的测验