Linux x86 コンピューターに ARM アセンブリ ファイル (test.s) があります。
Linux ボックスでこのファイルをコンパイルして実行したいのですが、方法がわかりません。
clang を使用する必要がありますか? もしそうなら、コマンドは何ですか?
Linux x86 コンピューターに ARM アセンブリ ファイル (test.s) があります。
Linux ボックスでこのファイルをコンパイルして実行したいのですが、方法がわかりません。
clang を使用する必要がありますか? もしそうなら、コマンドは何ですか?
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 ) を試してみてください。