在安德鲁·W·阿佩尔(Andrew W. Appel)的《现代编译器在ML中的实现》一书中,他说,在第17章中,可计算性理论表明,总是有可能发明新的优化转换,并继续证明完全优化的编译器将解决停顿问题:不产生输出且永不停止的Q可以轻松地用其最佳表示Opt(Q)代替,即“ L:goto L”。因此,完全优化的编译器可以解决停止问题。
所以我的问题是:是否存在用于终端程序的完全优化的编译器?我唯一的想法是:即使保证某个程序可以终止,它仍然可以任意复杂,对于任何具体的优化编译器C,一个人也许可以构造一个以C作为输入的程序,并以某种方式生成较差的程序,如下所示:某种特殊情况。
另外,将自己限制为终止程序有什么含义?
2
甚至没有控制流的情况下,甚至很难为单个代码块找到最佳指令序列。Wikipedia上的超级优化文章提供了很好的介绍(带有引文。)
—
Wandering Logic
Wikipedia文章提到超优化着眼于无环指令序列。我想没有循环是终止的另一种说法。通过简短地查看可用的参考文献,这似乎是可行的,但极其昂贵。
—
西蒙“恢复莫妮卡”的光芒
“优化”在这里是什么意思?运行时间较小?如果是这样,哪一个:最坏情况,平均情况,每种情况,某些情况...?
—
拉斐尔