补全:数死代码

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

开始练习 →

为什么在 IR 上做优化

优化大多放在 IR(中间表示)上做,是因为【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是

开始练习 →

优化 pass 通常怎么组织

编译器里的多趟优化,通常【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是整数(常量)或字符

开始练习 →

怎么判断一趟优化有没有白做

判断一趟优化是否起了作用,常看【0】。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是整数(常量)

开始练习 →

这次优化删了几条

按模型,优化前 5 条、优化后 3 条,removed 交回几? 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作

开始练习 →

这次优化变小了吗

按模型,前后都是 2 条,shrank 交回什么? 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是

开始练习 →

补全:数指令条数

补全 size:交回程序指令条数。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是整数(常量)或字

开始练习 →

补全:算删了几条

补全 removed:优化前减优化后。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是整数(常量)

开始练习 →

补全:判断是否变小

补全 shrank:优化后条数更少就是变小。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操作数 a/b 是整数(

开始练习 →

循环为什么值得重点优化

优化器特别关注循环,是因为【0】。

开始练习 →