用于x86的交叉编译臂组件

时间:2013-11-14 03:58:40

标签: assembly compiler-construction x86 arm clang

我在linux x86计算机上有一个ARM程序集文件(test.s)。

我想在linux框中编译并运行此文件,但我不确定如何。

我需要使用clang吗?如果是,命令是什么?

1 个答案:

答案 0 :(得分:6)

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)。