我寫了一個簡單的虛擬機,它有指令來操縱堆棧,將堆棧值存儲到寄存器,將堆棧值裝入堆棧,將值從寄存器移動到寄存器並設置寄存器值...我試圖寫一個非常簡單的編譯成這個VM字節碼的語言,我還沒有做過任何指令從地址到地址跳轉,但我覺得VM有足夠的字節碼來存儲變量值。如何用只有有限的寄存器存儲多個變量?
虛擬機有7個寄存器:a,b,x,y,z,j和i。但是,如果我有12個包含簡單整數的變量,我將如何將它們存儲在寄存器中?
我以前就讀過這篇文章,很多人都在談論寄存器分配 - 我不知道如何在代碼中實現它。我不知道我將如何開始,並且註冊分配器似乎相當複雜。
是否有任何(真的)簡單的寄存器分配器,我可以看看,或嘗試實現?任何人都可以貶低我的解釋,所以我可以嘗試執行一個?
謝謝。
哦,我明白了,所以將變量存儲到寄存器是一個優化的事情?唯一讓我困惑的是,如果你在棧上存儲一個變量值,你如何跟蹤它在堆棧中的位置以及它擁有的變量?我認爲7個寄存器看起來不是很多,但我沒有真正考慮任何設計 - 這只是一個自發的副項目 - 我可以輕鬆添加更多寄存器,但有多少個? – mosmo