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