我正在研究有关动态语言 VM 实现的 JIT 设计。自从 8086/8088 天以来,我没有做太多的组装,只是在这里或那里做了一点,所以如果我心情不好,那就太好了。
据我了解,x86 (IA-32) 架构今天仍然具有与以往相同的基本受限寄存器集,但内部寄存器数量已大幅增长,但这些内部寄存器通常不可用,并与寄存器重命名一起使用实现代码的并行流水线,否则无法并行化。我非常理解这种优化,但我的感觉是,虽然这些优化有助于提高整体吞吐量和并行算法,但我们仍然坚持使用的有限寄存器集会导致更多的寄存器溢出开销,如果 x86 有两倍或四倍的寄存器对我们可用,典型指令流中的推送/弹出操作码可能会显着减少?或者是否有其他处理器优化也可以优化这一点,我不知道?基本上如果我
任何关于研究的参考,或者更好的是,个人经历?
编辑:x86_64 有 16 个寄存器,是 x86-32 的两倍,感谢您的更正和信息。