我正在为我的编译器类继续我的 C# 编译器的工作。目前,我几乎完成了教科书中关于编译器优化的章节。
在大多数情况下,我的教科书在编写时并没有考虑到即时编译,我很好奇 C# 编译器执行的静态预jit 优化与它在 JIT 过程中的作用?
当我与人们谈论针对 CLR 进行编译时,我通常会听到诸如“大多数优化都是由 JIT 完成的”之类的话。
循环展开、常量折叠/传播、指令交织等事情是由 C# 的编译器预先完成还是由抖动处理?如果它们没有被抖动处理,那么抖动做了什么样的优化,这是即时编译器所独有的?