补全:数能化简的

补全 count_simplified:数化简后和原来不同的条数。 贯穿本节的 IR 模型(判题机没 gcc,这是它的确定模型):程序是三地址码元组列表,每条 (dst, op, a, b)——op ∈ const/copy/+/-/*,操

开始练习 →

真机上怎么算优化做对了

在受控容器里,一趟优化算做对的标准是【0】。 (本机受控:纯 Python 优化器 优化.py + IR 文件,没有 gcc。)

开始练习 →

从现象认优化出了问题

本机跑优化器出问题,下面哪些和「优化本身」直接相关? A. 优化后结果和优化前不一样 B. 该折叠的常量没折叠 C. 死代码没删掉、条数没降 D. IR 文件本身语法就写错了

开始练习 →

数一数原始 IR 有几条

场景:~/opt/ir.txt 是一段三地址码(每行一条 dst op a b),~/opt/优化.py 能读它。 任务:看优化前(-O0)原始 IR 一共几条指令,到 ~/对照表.txt 里查它对应的标记。 (判分只看你在受控容器里做出的

开始练习 →

能折叠掉几条常量运算

场景:~/opt/ir.txt 里有若干「两个常量相运算」的指令。 任务:数常量折叠能折掉几条(两个操作数都是数字的运算),到 ~/对照表.txt 里查它对应的标记。 (判分只看你在受控容器里做出的优化产物,纯本机、纯 Python,没有

开始练习 →

IR 里有几条死代码

场景:~/opt/ir.txt 里有些变量赋了值却没人用(说明里给出活跃输出)。 任务:数有几条死代码(赋值却没被后面用到、也不是活跃输出),到 ~/对照表.txt 里查它对应的标记。 (判分只看你在受控容器里做出的优化产物,纯本机、纯 P

开始练习 →

优化到 -O2 后剩几条

场景:~/opt/优化.py 支持 --O2(折叠 + 死代码消除)。 任务:跑 --O2 优化后 IR 还剩几条指令,到 ~/对照表.txt 里查它对应的标记。 (判分只看你在受控容器里做出的优化产物,纯本机、纯 Python,没有 gc

开始练习 →

修好常量折叠这趟

场景:~/opt/优化.py 的 fold 把常量的类型判断写成了 float(本该 int),而常量都是整数、永远不匹配,一条都没折叠。 任务:把判断条件改对,让 --O2 后把两常量的运算都折成 const(运算条数降到说明要求)、且结

开始练习 →

修好死代码消除这趟

场景:~/opt/优化.py 的 dce 过滤条件多了个恒真项(or True),结果一条死代码都没删。 任务:把那个恒真项去掉,让 --O2 后删掉没人用的赋值(条数降到说明要求)、且结果不变。改好运行 ~/check。 (判分只看你在受

开始练习 →

修好窥孔化简这趟

场景:~/opt/优化.py 的 peephole 里 x*1 那条规则的常量写错了(写成了 b == 2),x*1 没被化简。 任务:把它改回 b == 1,让 x*1 化简成直接取值(运算条数降到说明要求)、且结果不变。改好运行 ~/c

开始练习 →