我有一个ARM汇编文件(test.s),在一台Linux x86电脑上。
我想在Linux系统上编译和运行这个文件,但不确定如何操作。
需要使用clang吗?如果是的话,命令是什么?
我有一个ARM汇编文件(test.s),在一台Linux x86电脑上。
我想在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)。