6

我知道基於寄存器和基於堆棧的虛擬機如何獨立工作。我知道兩者的優點和缺點。我想知道的是,有沒有人試圖合併這兩個?基於寄存器+堆棧的虛擬機將如何工作?

我試圖搜索網絡的存在這樣的虛擬機,但無濟於事。我得到的最好結果是一篇關於混合虛擬機的文章(HyVM)。如果這樣的虛擬機確實是爲編程語言而創建的,那麼我有興趣查看其源代碼以瞭解其工作原理。

也許有人可以指引我找到這樣一個虛擬機的正確方向,或者將我鏈接到一篇文章或博客文章,詳細闡述這個主題。

+0

非常有趣。你在尋找什麼?您是否期待看到混合方法對嚴格基於寄存器的VM或基於堆棧的VM有什麼優勢?你的問題對我來說還不清楚。 –

+0

我想了解如何實施混合虛擬機。優點非常明顯 - 您可以使用堆棧操作來評估像'5 2 3 - +'這樣的表達式:'push 5','push 2','push 3','sub','add';然後你可以使用'store eax'這樣的指令將結果存儲在一個寄存器中。這爲您提供了這兩種虛擬機的優勢。整個程序會寫成'x = 5 2 3 - +',其中'x'是一個SSA變量。我不清楚VM的內部結構 - 是內存中還是處理器中的堆棧,堆棧評估成本等等。 –

回答

5

看看Forth。它使用虛擬機,主要是面向堆棧的,但允許按照您的建議存儲值。

此外,虛擬機非常小,因此很容易探索和移植它。

相關問題