我目前正在通过nand2tetris上大学课程和思想
添加一些优化会很有趣。对于堆栈虚拟机,这主要涉及
将栈顶映射到寄存器,映射不存在的栈槽
跨越对恒定内存的调用并使用已知的专用指令
输入以避免不必要的堆栈操作。我最初加了一个
专业化太晚了,所以x = x + 1
最终变成了
push 1
push x
add
pop x
store temp
load x
inc
store x
load temp
store temp
inc x
load temp
inc x
降至@x; M = M + 1
,不会覆盖D寄存器,因此
不需要存储/加载。
提问时间:实际的编译器将如何在常规设置中优化这种不必要的存储/加载类型?我的直觉说像:
我发现这些分析的可能实现有很多,但很少 如何利用结果数据。是否可以做这种 在孤立的通道中进行优化还是需要一些专门的混合动力 多种算法的版本?