0

Sony Ericsson ARC S を持っています。そのためのプログラムを ARM アセンブリ言語で書きたいと思っています。私は MIPS アーキテクチャと X86 に少し慣れています。

簡単なプログラムを書き始めて、これを行うために必要なプログラム、シミュレーター、またはその他のことを教えてください。

4

2 に答える 2

1

多くの gnu ベースのクロス コンパイラがあり、独自のクロス コンパイラを構築するのは非常に簡単です。特に、アセンブリ言語のみが必要な場合は、binutils を構築するだけで済みます。

wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz
tar xzvf binutils-2.22.tar.gz 
cd binutils-2.22
../configure --target=arm-none-eabi --prefix=/pick/a/path --disable-werror --disable-nls
make
sudo make install

インストールする場所を選択する必要があります。私は /gnuarm が好きです。/opt/gnuarm など、お好きなものを試してみてください。

それを試したくない場合は、codesourcery.com にアクセスしてください。これにより、コード ソースを購入したメンター グラフィックスにたどり着くことができます。ARM 用の LITE バージョンを探してください。gnueabi バージョンで問題ありません。Linux バージョンでも問題ありません。必要なのは、アセンブラとリンカ、またはコンパイラ、アセンブラ、およびリンカだけです。

emdebian にはツールチェーンがありましたが、しばらく試していませんでした。人々はまだygartoを使用しており、Windowsの場合はwinarmを使用しています。

mips が唯一の asm である場合、arm はいくつかの点でより単純になります。Mips は少し標準的ではありません。ほとんどのプロセッサは、キャリー フラグ、ネガティブ フラグ、ゼロ フラグ、符号付きオーバーフロー フラグ (CNZV) を含むプログラム ステータス ワードを使用し、これらのフラグを通常の命令、add、sub などで設定してから分岐します。彼ら。mips を使用すると、ステータス フラグがありません。代わりに、2 つのレジスタを指定して、等しい場合は分岐を指定すると、減算が実行され、等しい場合は分岐が実行されます。他のプロセッサでは、減算は、減算を行うか、フラグ以外の結果を保存しない比較を使用して行われます。ARM のロードとストアは、sw $4,0x10($5) の代わりに異なる構文を持ちます。 str r4,[r5,#0x10] 角かっこは間接性のレベルを示し、# は定数の前にあります。アームの即値は通常 8 または 9 ビットですが、ミップでは即値は 16 ビットです。arm を使用すると、1 つの命令で複数のレジスタを格納できます stm r0,{r1,r2,r3,r4} は、r1 を r0 のアドレスに格納し、r2 を r0+0x04 のアドレスに格納し、r3 を r0+0x08 のアドレスに格納します。の上。これは通常、スタックのオンとオフを「プッシュ」および「ポップ」するために使用されます。arm を使用すると、ストアまたはロードのベース レジスタを変更できます。たとえば、ldr r1,[r0],#4 のように角かっこのすぐ外側にある場合は、r1 を r0 のアドレスに格納し、r0 に 4 を追加することを意味します。追加 add r0,r0,#4 命令。Mips は分岐遅延スロットを持つ唯一のプロセッサではありませんが、実用的な目的のために、そうであると仮定し、他のプロセッサに遅延スロットがないことを前提としているため、分岐の後に命令を配置して実行を期待しないでください。

gdb には arm からオープン ソース化された armulator シミュレーターが含まれていますが、アクセス方法がわかりません。qemu には多くの腕のサポートがありますが、視認性はほとんどありません。私は親指のみである親指を持っています(32ビットのmips命令セットと比較して16ビットのmips命令セットに非常に似ているアーム命令セットの縮小版)が、アーム、シミュレーターへの変更の感触を与えるでしょう読みやすく、自由に変更して、何が起こっているかを把握したり、メモリバスやレジスタなどを監視したりできます。skyeye には多数のプロセッサ シミュレータ、vba があり、ニンテンドー ds シミュレータにはアーム プロセッサ シミュレータが含まれています。さらに、無数の 50 ドル未満のマイクロコントローラ ボードと、アーム プロセッサを搭載した 20 ドル未満のマイクロコントローラ ボードもあります。

于 2012-05-16T21:29:04.607 に答える
0

Eclipse、GNU、Visual Studio、Clang など、他のプロセッサで使用されるものと同じツールを使用します。x86 の代わりに、2 回目のインストールと ARM のダウンロードを行う必要があるのは 1だけです

Arm ワークステーションを持っていない限り、x86 ボックスで作業し、ARMへのクロス コンパイル/アセンブルを行うことになります。したがって、コンパイルされたコードをARMマシンに取り込むには何らかの手段が必要です。デバッグは、多くの場合、ワークステーションへのシリアル経由でリモートで行われるため、シンボル テーブルを利用できます。

于 2012-05-16T19:13:20.223 に答える