-
動態重編譯
鎖定
- 中文名
- 動態重編譯
- 用 途
- 執行時不同架構間轉換機器碼
- 領 域
- 計算機
動態重編譯用途
大多數動態重編譯器用於在執行時不同架構間轉換機器碼。這是一個在模擬傳統遊戲平台中往往需要執行的任務。在其他情況下,系統可採取動態重編譯作為自適應優化的一部分,以執行可移植程序,如Java與 .NET通用語言運行庫字節碼。全速調試器還使用動態重編譯來減少大多數逆優化技術中產生的空間開銷,並實現其他功能,例如動態線程遷移。
[1]
動態重編譯任務
動態重編譯執行的主要任務:
- 從源平台讀入機器碼
- 為目標平台釋放機器碼
動態重編譯也可以執行一些輔助任務:
- 管理重編譯代碼的緩存
- 在具有循環計數寄存器的平台上更新已循環計數
- 中斷檢查管理
- 為支持虛擬化的硬件提供接口,例如GPU
動態重編譯應用
動態重編譯通用
- 動態重編譯為許多Java虛擬機的特色
- 在PowerPCClassic Mac OS平台上運行摩托羅拉68000系列代碼的Mac 68k模擬器
- Psyco,Python的一個專有編譯器
- Mac上的Microsoft Virtual PC,用於在PowerPC架構上運行x86代碼
- QEMU,一個開源的全系統模擬器
- VirtualBox使用動態重編譯
動態重編譯遊戲
- MAME在其CPU模擬器中使用動態重編譯,支持MIPS、SuperH、PowerPC,甚至是Voodoo GPU
- PPSSPP,索尼PlayStation Portable模擬器,其在x86與ARM平台上都有重編譯器
- PCSX2,索尼PlayStation 2模擬器,擁有"SuperVU"的繼任者——"microVU"重編譯器
動態重編譯即時編譯
即時編譯(英語:Just-in-time compilation),又譯及時編譯、實時編譯,動態編譯的一種形式,是一種提高程序運行效率的方法。通常,程序有兩種運行方式:靜態編譯與動態解釋。靜態編譯的程序在執行前全部被翻譯為機器碼,而解釋執行的則是一句一句邊運行邊翻譯。
即時編譯器則混合了這二者,一句一句編譯源代碼,但是會將翻譯過的代碼緩存起來以降低性能損耗。相對於靜態編譯代碼,即時編譯的代碼可以處理延遲綁定並增強安全性。
即時編譯器有兩種類型,一是字節碼翻譯,二是動態編譯翻譯。
微軟的.NET Framework,還有絕大多數的Java實現,都依賴即時編譯以提供高速的代碼執行。Mozilla Firefox使用的JavaScript引擎SpiderMonkey也用到了JIT的技術。Ruby的第三方實現Rubinius和Python的第三方實現PyPy也都通過JIT來明顯改善了解釋器的性能。
[2]
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:3次歷史版本
- 最近更新: 麦芽的阳光