これから、Windows Mobile 5 iPAQ用に開発するために、ARM Assemblyを学習しますが、いくつか質問があります。
主な違い:
ARMはRISCスタイルのアーキテクチャです。命令のサイズは通常です(標準のARMの場合は32ビット、Thumbモードの場合は16ビットですが、Thumbには2つの命令「スロット」を噛み砕く命令がいくつかあります)
少なくともARM v5アーキテクチャ(v6が何をするのかわかりません)までは、ARMの割り込みモデルはIntelの割り込みモデルとは大きく異なります-レジスタをスタックにプッシュする代わりに、 ARMは、通常のセットを「シャドウ」する別のレジスタセットにスワップします。プロセッサのモードによって、表示されるレジスタファイルが決まります(すべてのレジスタが必ずしもシャドウされるわけではありません)。それはかなり複雑な配置です。新しいARMアーキテクチャ(とにかくv7)には、割り込みが発生したときにレジスタがスタックにプッシュされるIntelに近い割り込みモデルがあります。
アーム命令には、Intelにはない興味深い機能がいくつかあります。
一方、ARMは、メモリからのロードとメモリへの保存を除いて、メモリを直接処理することはできません。 Intel Assemblyは、メモリ上で直接、より多くの操作を実行できます。
ARMアーキテクチャバージョンは、実際のARMプロセッサバージョンに直接対応していないことに注意してください。たとえば、覚えていれば、ARM7はアーキテクチャv5プロセッサです。個人的には、これは本来よりもはるかに混乱していると思います。
ARMアーキテクチャリファレンスは、 http://www.arm.com から無料でダウンロードできます。また、良い出発点として、 さまざまなARMマイクロコントローラーに関するHitexのガイド のコピーを入手することをお勧めします。
ARMを使い始めるためのポインタに関して、Stackoverflowに関するいくつかの質問がありました。それらを確認すると、開始するのに適した場所がたくさんあります。
また、ARMは、チップを生成するのではなく、IPのライセンスを取得します。ライセンシーは、さまざまな方法でARMコアマイクロプロセッサを構成できます。最も重要なのは、問題は、ARMコア自体がIRQとFIRQの2つの割り込みのみを定義することです。ほとんどの場合、ベンダー固有の割り込みコントローラーがあるため、デバイスで使用されているマイクロプロセッサーを正確に知る必要があります。割り込みの処理方法を知る必要があります。iPAQモデルでは、Intel StongARMおよびXScaleプロセッサがさまざまに使用されています。そのレベルで開発する場合は、特定の部分のユーザーリファレンスマニュアルをダウンロードする必要があります。
とはいえ、割り込みサービスとデバイスドライバーはOSによって提供されるため、このような低レベルの詳細について心配する必要はおそらくありません。実際、開発言語としてのアセンブラーの選択については疑問があります。 ARM(コンパイラはコードパフォーマンスの点でほぼ確実にパフォーマンスを向上させます)で、CまたはC++ではなくアセンブラを選択する理由はほとんどありません。さらにWindowsMobileでは、最も生産性の高いアプリケーションレベルの言語です。 C#である可能性があります。