基於堆棧的和基於寄存器的虛擬機如何處理不同的數據類型?基於(堆棧/註冊)的虛擬機如何處理不同的數據類型
我知道基於堆棧的虛擬機使用堆棧來存儲他們的數據以及在這個堆棧上和下來推送和彈出數據,但他們如何表示這些數據?是否像某種數據可以被轉換爲任何需要的數據或有多個堆棧,每個數據類型一個堆棧,例如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