栈与寄存器的区别

726
  • java虚拟机都是基于栈的结构,而Dalvik虚拟机则是基于寄存器。
  • 基于栈的指令很紧凑。java虚拟机使用的指令只占一个字节,因而称为字节码。
  • 基于寄存器的指令由于需要指定源地址和目标地址,因此需要占用更多的指令空间。
  • Dalvik虚拟机的某些指令需要占用两个字节。
  • 基于栈和基于寄存器的指令集各有优劣,一般而言,执行同样的功能,基于栈的需要更多的指令(主要是load和store指令),而基于寄存器需要更多的指令空间。
  • 栈需要更多指令意味着要多占用CPU时间,寄存器需要更多指令空间意味着数据缓冲更易失效。