3

Linux x86 コンピューターに ARM アセンブリ ファイル (test.s) があります。

Linux ボックスでこのファイルをコンパイルして実行したいのですが、方法がわかりません。

clang を使用する必要がありますか? もしそうなら、コマンドは何ですか?

4

1 に答える 1

7

clang が何らかの形で役立つ可能性はほとんどありません。結局、Clang は C/C++ コンパイラです。

必要なのはアセンブリ トランスレータです。そういうものは確かに存在しますが、オープンソース プロジェクトに関しては品質がかなりバラバラなので、ググって自分の目で確かめてください。

LLVM (clang の下のマシン抽象化ライブラリ) は、そのようなことを行うために使用されていました。LLVM の使用は、他のアセンブリ トランスレータの使用と同じです。最初にアーム アセンブリを 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 に答える