2015-09-21 39 views

回答

3

Binary translation是一件事情,但並非微不足道。與其他編譯器基礎結構相比,這是一個相對小衆的事情。此外,您似乎需要靜態轉換(即爲目標平臺生成完整的二進制文件,並在運行時不再執行任何操作)。靜態轉換器要麼具有可以接受的減速並且不支持自修改代碼(可能還有其他高級功能),要麼通過實現全功能,非常慢的仿真器來支持所有這些。

在任何情況下,實現一個都是非常重要的,特別是對於像x86這樣複雜的體系結構。除非你發現一個已經可以工作的從x86到RISC-V的通用二進制翻譯器,否則只需將該程序移植到可以爲RISC-V編譯的形式(比如更廣泛的編譯器支持的主流語言)就可以了。由於您似乎有權訪問源代碼,因此這應該是可行的,並且可能還會提高未來的可維護性。但首先,雙擊和三重檢查您是否可以找到當前使用的語言編譯器確實是目標RISC-V。

+0

顯然有一個[LLVM後端](https://github.com/riscv/riscv-llvm/blob/RISCV/README.md),所以你應該能夠將LLVM作爲一個inrermediate目標。 – rici

+2

@rici對於二進制翻譯?技術上來說(儘管它不支持自修改代碼),但是準確地將所有x86操作碼及其副作用轉換爲LLVM IR仍然是一項艱鉅的任務,只比直接轉換爲RISC-V稍微好一點。我認爲,發現現有的成熟項目是使二進制翻譯路線發揮作用的唯一現實途徑。 – delnan

+1

我同意。我建議「僅將程序移植到可爲RISC-V編譯的形式」可以通過移植程序來發布LLVM;可能實際上可用的東西(取決於程序是什麼)以及哪些具有其他優點。也許我應該更清楚。 – rici

相關問題