概念
二進制翻譯(Binary Translation)是一種直接翻譯可執行二進制程式的技術,能夠把一種處理器上的二進制程式翻譯到另外一種處理器上執行.它使得不同處理器之間的二進制程式可以很容易地相互移植,擴大了硬體/軟體的適用範圍,有助於打破前面提到的處理器和支持軟體之間互相掣肘影響創新的局面.
種類
基於軟體的二進制翻譯,可以分為三類:解釋執行,靜態翻譯,動態翻譯。
1.解釋執行對源處理器代碼中的每條指令實時解釋執行,系統不保存也不快取解釋過的指令,不需要用戶干涉,也不進行任何最佳化.解釋器相對容易開發,比較容易與老的體系結構高度兼容,但代碼執行效率很差。
2.靜態翻譯是在源處理器代碼執行之前對其進行翻譯,將源機器上的二進制可執行程式檔案A完全翻譯成目標機器上的二進制可執行程式檔案B,然後在目標機上執行程式B.一次翻譯的結果可以多次使用.靜態翻譯器離線翻譯程式,有足夠的時間進行更完整細緻的最佳化,代碼執行效率較高.然而,靜態翻譯器無法很好地解決自修改代碼,間接過程調用及間接跳轉等問題,需要依賴解釋器的支持;而且靜態翻譯器需要終端用戶的參與,這給用戶使用造成了很大不便。
3.動態翻譯則在程式運行時對執行到的片斷進行翻譯,克服了靜態翻譯的一些缺點--如由於不能知道控制流中某點的暫存器或記憶體的值,因此不能實現代碼挖掘;動態翻譯還可以解決大部分實際情況中的自修改代碼問題,而這在靜態翻譯是不可能的[14];動態翻譯可以利用執行時的動態信息來發掘靜態編譯器所不能發現的最佳化機會;動態翻譯器對用戶可以做到完全透明,無需用戶干預。