补全:数死代码

补全:数死代码

补全 count_dead:数 dst 不在 keep 里的赋值。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op

阅读更多 →
补全:死代码消除

补全:死代码消除

补全 dce:只留下被用到或活跃输出的赋值。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/cop

阅读更多 →
补全:收集用到的变量

补全:收集用到的变量

补全 used_vars:把当作操作数用到的变量名收进来(这里补 a)。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——

阅读更多 →
用到了几个不同变量

用到了几个不同变量

按模型,[r=x+y],used_vars 里有几个变量? 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ co

阅读更多 →
有几条死代码

有几条死代码

按模型,[d=const 1, r=const 2]、活跃输出 live=[r],count_dead 交回几? 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,

阅读更多 →
什么样的赋值不能删

什么样的赋值不能删

下面这种赋值不能当死代码删:【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/

阅读更多 →
删死代码为什么安全

删死代码为什么安全

四条赋值,两条没人用 没人用的淡出删掉,结果照旧 删掉死代码不改变程序结果,因为【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op,

阅读更多 →
死代码指的是什么

死代码指的是什么

四条赋值,两条没人用 没人用的淡出删掉,结果照旧 可以被死代码消除删掉的,是【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a

阅读更多 →
补全:数 const 指令

补全:数 const 指令

补全 count_const:数程序里有几条 const。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ co

阅读更多 →
补全:常量传播

补全:常量传播

补全 propagate:操作数是已知常量的变量,换成它的值。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈

阅读更多 →