Thumb2 アーキテクチャ用のインラインアセンブラ
この文書はアセンブリ言語プログラミングにある程度慣れていることを前提としており、 チュートリアル を学んだ後に読むべきものです。命令セットの詳しい説明は、後述のアーキテクチャリファレンスマニュアルを参照してください。インラインアセンブラは、ここで説明する ARM Thumb-2 命令セットの一部をサポートします。構文は、上記の ARM のマニュアルで定義されているものにできるだけ近づけ、Python の関数呼び出しに変換した形にしています。
命令は、特に記載がない限り 32 ビットの符号付き整数データを操作します。サポートされているほとんどの命令はレジスタ R0-R7 のみを操作します。 R8-R15 がサポートされる場合はその旨を記載しています。レジスタ R8-R12 は、関数から戻る前に元の値に戻さなければなりません。レジスタ R13-R15 は、それぞれリンクレジスタ、スタックポインタ、プログラムカウンタです。
この文書の表記規則
可能な場合は、各命令の動作を Python で説明しています。たとえば次のようにです
add(Rd, Rn, Rm)
Rd = Rn + Rm
これにより、命令の効果を Python で示せます。Python は間接参照のような概念をサポートしていないため、これが不可能な場合もあります。そのような場合に使う擬似コードは、該当するページで説明します。
命令の分類
以下の節では、MicroPython がサポートする ARM Thumb-2 命令セットの部分集合について詳しく説明します。
使用例
以下の節では、アセンブラの使い方についてさらにコード例とヒントを示します。
参考資料
ARM v7-M アーキテクチャリファレンスマニュアル(簡単な登録手続きの後、ARM のサイトで入手できます。学術サイトでも入手できますが、古いバージョンに注意してください。)