我正在開發玩具CPU(TR3200 cpu)的仿真器。其實我有一個純粹的解釋器核心,但我正在研究開發一個追蹤JIT cpu核心。 我對如何追蹤被追蹤的源機器代碼是否被仿真代碼修改(自修改代碼或類似將操作系統加載到RAM的操作系統) 我在考慮使用段或間隔爲此,但我找不到任何信息或實例如何處理。JIT仿真和跟蹤髒內存塊
換句話說......我知道JIT(我在考慮如何使用asmjit),我應該在使用jitted塊的開始地址作爲索引的地圖上存儲jitted代碼;我有一些想法如何處理循環計數和設備與jitted代碼同步。但是當guest程序寫入一個jitted內存塊時,我不清楚如何處理。
例如:我們有一個簡單的操作系統,它在地址0x100-0x500處執行了一個程序,並且它正確返回。 JIT cpu核心會(樂觀地)生成代表這些代碼塊的本地機器代碼。現在,如果操作系統加載另一個程序並將其放置在0x200-0x300地址塊上,則不應使覆蓋後的0x100-0x500的舊jitted塊失效。 或者是最糟糕的情況,一個自我重寫的程序,會導致jitted塊無效。 如何檢測?
嘿!爲什麼要投票? – Zardoz89 2015-02-24 16:53:28
可能因爲沒有明確的問題。 :-) – 2015-02-24 19:35:51
謝謝你爲什麼反對投票的答案。我會嘗試重寫。我在一天的漫長的一天之前在醫院的一間候診室裏用電話寫了一封...... – Zardoz89 2015-02-24 19:43:36