- 主题:jvm 为啥选择栈虚拟机而不是寄存器虚拟机?
不论是 python vm 还是 java vm,为啥当初会选择栈虚拟机?
但 google 的 android runtime 虚拟机选择的却是寄存器虚拟机?
这俩有啥特别的考虑吗?
--
FROM 47.243.39.*
【 在 hgoldfish 的大作中提到: 】
: 不论是 python vm 还是 java vm,为啥当初会选择栈虚拟机?
简单
: 但 google 的 android runtime 虚拟机选择的却是寄存器虚拟机?
要考虑到性能
: 这俩有啥特别的考虑吗?
: ...................
--
FROM 71.204.185.*
基于寄存器虚拟机编译出来的指令码更短小一些,更加适合移动端
【 在 hgoldfish 的大作中提到: 】
: 不论是 python vm 还是 java vm,为啥当初会选择栈虚拟机?
: 但 google 的 android runtime 虚拟机选择的却是寄存器虚拟机?
: 这俩有啥特别的考虑吗?
--
FROM 114.240.232.*
反了
栈处理器的代码更小
【 在 dreamr 的大作中提到: 】
: 基于寄存器虚拟机编译出来的指令码更短小一些,更加适合移动端
--
FROM 71.204.185.*
寄存器虚拟机理论性能上限高,但难度也大了
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 不论是 python vm 还是 java vm,为啥当初会选择栈虚拟机?
:
: 但 google 的 android runtime 虚拟机选择的却是寄存器虚拟机?
:
--
FROM 117.136.68.*
栈处理器单条指令短,但是指令数量多得多,整体上看编译结果体积更大
【 在 BigCarrot 的大作中提到: 】
: 反了
: 栈处理器的代码更小
:
--
FROM 114.240.232.*
说的就是最终的指令大小
如果你能翻墙的话,读一读维基上的stack machine
另外楼主要的stack machine VS register machine 在那片文章里面也有
【 在 dreamr 的大作中提到: 】
: 栈处理器单条指令短,但是指令数量多得多,整体上看编译结果体积更大
--
FROM 71.204.185.*
早年间有说法是google的delvik特别设计成寄存器模式,就是为了避开java的数据栈,这样可以躲开oracle的Java授权限制,有人听说过吗
--
修改:golfman0715 FROM 36.112.198.*
FROM 36.112.198.*
照你这么说,android 应该用栈式虚拟机
【 在 BigCarrot 的大作中提到: 】
: 说的就是最终的指令大小
: 如果你能翻墙的话,读一读维基上的stack machine
: 另外楼主要的stack machine VS register machine 在那片文章里面也有
: ...................
--
FROM 111.206.96.*
不,android觉得jvm的栈虚拟机太慢了,就改成了寄存器
google search ai也是这么看的
Android chose Dalvik as its virtual machine (VM) for a number of reasons, including:
Memory efficiency: Dalvik was optimized for memory and battery usage.
Register-based model: Dalvik's register-based model was faster than the stack-based model used by the Java Virtual Machine (JVM).
Compatibility: Dalvik was compatible with other runtimes that executed DEX bytecode.
【 在 dreamr 的大作中提到: 】
: 照你这么说,android 应该用栈式虚拟机
--
FROM 71.204.185.*