📜  门| GATE-CS-2014-(Set-1)|第65章

📅  最后修改于: 2021-06-28 21:29:31             🧑  作者: Mango

以下哪一项是FALSE?
(A)基本块是指令序列,其中控制从头开始输入序列,然后从结尾退出。
(B)可用的表达分析可用于常见的子表达消除。
(C)实时变量分析可用于消除无效代码。
(D) x = 4 * 5 => x = 20是常见子表达式消除的一个示例。答案: (D)
说明: (A)基本块是指令序列,其中控制从头开始输入该序列,在结尾退出为TRUE。

(B)可用的表达式分析可用于常见的子表达式消除为TRUE。可用表达式是一种分析算法,它为程序中的每个点确定不需要重新计算的表达式集。可用的表达式分析用于执行全局通用子表达式消除(CSE)。如果某一时刻有表达式可用,则无需重新评估它。

(C)活变量分析可用于消除死代码为TRUE。

(D)x = 4 * 5 => x = 20是常见子表达式消除为FALSE的示例。
通用子表达式消除(CSE)是指编译器优化在必要时用一个保存计算值的单个变量替换相同的表达式(即,它们都求值相同)。

下面是一个例子

In the following code:

a = b * c + g;
d = b * c * e;

it may be worth transforming the code to:

tmp = b * c;
a = tmp + g;
d = tmp * e;

资料来源:
https://zh.wikipedia.org/wiki/Common_subexpression_elimination
https://en.wikipedia.org/wiki/Available_expression
这个问题的测验