基于堆栈的和基于寄存器的虚拟机如何处理不同的数据类型?基于(堆栈/注册)的虚拟机如何处理不同的数据类型
我知道基于堆栈的虚拟机使用堆栈来存储他们的数据以及在这个堆栈上和下来推送和弹出数据,但他们如何表示这些数据?是否像某种数据可以被转换为任何需要的数据或有多个堆栈,每个数据类型一个堆栈,例如ints,浮点数,对象,字符,数组和引用?如果它使用多个堆栈,那么它是否必须移动东西才能添加说float和int?
另外,基于注册的虚拟机做类似的事情吗?
如果许多虚拟机以不同的方式运行,那么JVM和Dalvik虚拟机就是很好的例子。
在此先感谢。
堆栈中的数据被解释*的方式通常取决于所执行的操作码。例如,当有些人可以使用堆栈项目时,有些专用于字节或短操作。堆栈总是存储相同类型的数据,可能是很长的一段时间。 – Seki 2014-10-27 08:37:28
@Seki,所以它们的数据类型与您的说法完全相同,但是它们是通过不同的操作码进行转换或用作不同类型的? – zeitue 2014-10-27 14:50:09
调查[neokvm](http://nekovm.org/)和[lua](http://lua.org/)。两者都是简单的虚拟机,并且源代码是免费软件。 – 2014-10-27 14:50:12