对象文件是否包含x86代码?我们如何从目标文件生成RISC-V代码?

时间:2015-09-21 09:37:59

标签: compiler-construction object-files riscv

我们在编译代码后生成了目标文件(不是用C / C ++编写的)。是否可以从此目标文件生成等效的RISC-V代码?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:3)

Binary translation是一件事,但非常重要。与其他编译器基础架构相比,它是一个相对利基的东西。此外,您似乎需要静态转换(即为目标平台生成完整的二进制文件,并且在运行时不执行任何操作)。静态转换器要么具有可接受的减速度,并且不支持自修改代码(以及可能的其他高级功能),要么通过实现功能完备,速度非常慢的仿真器来支持所有这些功能。

在任何情况下,实现一个都非常复杂,特别是对于像x86这样复杂的架构。除非您找到从x86到RISC-V的已经正常工作的通用二进制转换器,否则只需将程序移植到可以为RISC-V编译的表单(例如,具有更广泛编译器支持的更主流语言),您可能会更好。由于您似乎可以访问源代码,因此这应该是可行的 - 并且还可以提高将来的可维护性。但首先,双重和三重检查是否可以找到 目标RISC-V的当前使用语言的编译器。