基于栈和基于寄存器的指令集区别

基于栈和基于寄存器的指令集区别

  • 基于栈的指令集
    优点:可移植(寄存器由硬件提供,程序依赖硬件寄存器会收到硬件约束),基于栈的指令集架构,用户不会直接使用这些寄存器,由虚拟机实现决定把一些访问频繁的数据放到寄存器中获得尽量更好的性能;还有优点是代码相对紧凑(字节码中每个字节对应一条指令)、编译器实现简单(无需考虑空间分配)等;
    缺点:执行速度慢,效率较低。因为操作本身伴随着大量的入栈出栈,导致完成相同功能所需的指令数量增加;更重要的是栈实现在内存中,频繁的栈访问意味着频繁的内存访问,这大大降低了效率。
  • 基于寄存器的指令集
    优点:效率相对较高。
    缺点:平台依赖,可移植性差。编译实现复杂。(相对于基于栈来说)。