【发布时间】:2014-10-27 02:43:54
【问题描述】:
基于堆栈和基于寄存器的虚拟机如何处理不同的数据类型?
我知道基于堆栈的虚拟机使用堆栈来存储它们的数据并在堆栈上推送和弹出数据,但是它们如何表示这些数据?它是像某种可以转换为任何需要的数据,还是有多个堆栈,每个数据类型都有一个堆栈,例如整数、浮点数、对象、字符、数组和引用?如果它使用多个堆栈,那么它是否必须移动东西才能添加一个浮点数和一个整数?
除了基于寄存器的虚拟机做类似的事情吗?
如果许多 VM 的做法不同,那么 JVM 和 Dalvik VM 就是很好的例子。
提前致谢。
【问题讨论】:
-
堆栈中的数据解释的方式通常取决于执行的操作码。例如,有些专用于字节或短操作,而有些则可以将堆栈项用作长。堆栈总是存储相同类型的数据,可能很长。
-
@Seki 所以它们都是相同的数据类型,就像你说的那样,但是它们被不同的操作码转换或用作不同的类型?
标签: c types jvm stack vm-implementation