🌘 SBCL:終極組合語言實驗板 - Paul Khuong:一些 Lisp
➤ 小堆疊虛擬機的編譯時優化策略:借鑒x87和F18
https://pvk.ca/Blog/2014/03/15/sbcl-the-ultimate-assembly-code-breadboard/
作者探索如何為具備有限堆疊大小(例如8個槽位)的虛擬機器進行優化,其靈感來自x87浮點單元和Chuck Moore F18處理器。此設計的關鍵在於,堆疊的「推入」(push)與「彈出」(pop)操作不再移動實際資料,而是僅透過調整一個模數計數器來標記堆疊頂部(TOS)。為實現這一目標,每個虛擬機器的基本操作(primop)都需要為堆疊計數器的每個可能值生成專屬的機器碼變體。這些變體程式碼會以固定間隔儲存,使得「NEXT」指令能根據當前堆疊計數器的值,動態跳轉至正確的原始操作變體。作者利用SBCL的組合語言工具,展示瞭如何透過輔助函數和資料結構,來管理堆疊暫存器分配、在程式碼生成時追蹤堆疊計數器,並發射帶有填充且位置獨立的機器碼,以確保所有變體
#虛擬機器 #SBCL #組合語言 #堆疊優化 #Lisp
SBCL: the ultimate assembly code breadboard - Paul Khuong: some Lisp

Paul Khuong's personal blog. Some Lisp, some optimisation, mathematical or computer.