3

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

我想在 linux 机器上编译和运行这个文件,但我不确定如何。

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

4

1 回答 1

7

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

于 2013-11-14T04:19:33.597 回答