事先:这只是我今晚的一个令人讨厌的想法: - )
考虑以下情况:
你有一些arm-elf可执行文件,出于某些原因你想在amd64框上运行它而不进行模拟。 为了简化场景,假设我们只想处理与libc链接的简单控制台应用程序,并且没有其他架构特定要求。
如果要在不同体系结构之间转换二进制文件,则必须考虑以下几点:
Endianess应该是较小的问题之一。 如果目标寄存器的位宽小于源架构的位宽,则可以插入额外的指令来表示相同的行为。这同样适用于寄存器的功能。
最后,(在抨击这个想法之前),看看下面的简单代码片段以及相应的对象反汇编。
Corresponding AMD64 Disassembly
在我看来,应该可以在不同架构之间转换这些对象。甚至函数调用(如printf)也可以映射或包装到目标体系结构的libc。
现在我的问题: 有没有人考虑过要实现这个目标?
实际上可能吗?
是否已有一些项目处理此问题?
提前致谢!