Luk*_*uke 2 compiler-construction x86 assembly arm clang
我在linux x86计算机上有一个ARM程序集文件(test.s).
我想在linux盒子上编译并运行这个文件,但我不确定如何.
我需要使用clang吗?如果是这样,命令是什么?
clang不太可能以任何方式帮助你.毕竟,Clang是一个C/C++编译器.
你需要的是一个汇编翻译器.这样的事情确实存在,但是当涉及开源项目时,质量是相当不同的,所以你应该只是谷歌并亲自看看.
LLVM(clang下面的机器抽象库)已被用来做这些事情.使用LLVM与使用任何其他程序集转换程序没有什么不同:首先将arm程序集映射到LLVM程序集,然后可以将LLVM程序集编译为其他程序.
此处概述了此类项目的一个示例:http://infoscience.epfl.ch/record/149975/files/x86-llvm-translator-chipounov_2.pdf.该团队使用经过特殊修补的QEMU为他们生成中间LLVM代码.
在大多数此类情况下,简单地(更安全地)手动重写程序集可能更容易(也更安全),可能更高级语言.
如果有问题的程序集文件是独立程序,则可能根本不需要翻译它.只需尝试QEMU(http://www.qemu.org).