命令セットの概要

すべての ARM 命令の長さは 32 ビットです。これらの命令はワード境界で整列されて保持されるため、ARM 状態では命令アドレスの最下位 2 ビットが常にゼロになります。

Thumb および ThumbEE 命令の長さは 16 ビットまたは 32 ビットのいずれかです。Thumb 命令はハーフワード境界で整列されて保持されます。命令の中に、アドレスの最下位ビットを使用して、分岐先のコードが Thumb コードか ARM コードかを判断するものもあります。

32 ビット Thumb が導入されるまで、Thumb 命令セットは、ARM 命令セットの機能の一部のサブセットにしか対応していませんでした。これは、ほぼすての Thumb 命令が 16 ビットであったためです。ともに、32 ビット Thumb と 16 ビット Thumb 命令セットの機能は、ARM 命令セットの機能とほぼ同等です。

Table 7 には、使用可能な命令の機能グループの一部を示しています。

Table 7. 命令グループ

命令グループ

説明

分岐と制御

これらの命令は以下の目的に使用されます。

  • サブルーチンに分岐する。

  • 逆方向に分岐してループを形成する。

  • 条件付き構造内で順方向に分岐する。

  • 後続の命令を分岐のない条件命令にする。

  • プロセッサの ARM 状態と Thumb 状態を切り替える。

データ処理

データ処理命令は汎用レジスタに対して演算を実行します。このグループの命令は、2 本のレジスタの内容に対して加算、減算、ビットごとの論演算などを実行し、3 本目のレジスタにその結果を返すことができます。これらの命令は、単一のレジスタ値や、レジスタ値と命令内で渡されるミディエート値に対して演算を実行することもできます。

Long 乗算命令は、64 ビットの結果を 2 本のレジスタに分けて返します。

単一レジスタロードとストア

単一レジスタロード/ストア命令は、単一のレジスタとメモリとの間で値のロードまたはストアを行います。これらの命令を使用して、32 ビットワード、16 ビットハーフワード、または 8 ビット符号なしバイトのロードまたはストアを行うことができます。また、バイトとハーフワードのローを符号拡張またはゼロ拡張にすることにより、32 ビットレジスタを充填できます。

また、いくつかの命令は、64 ビットダブルワードの値を 2 本の 32 ビットレジスタに分けてロードまたはストアできるように定義されています。

複数レジスタロードとストア

複数レジスタロード/ストア命令は、汎用レジスタのサブセットをメモリからロードするか、メモリにストアします。

ステータスレジスタアクセス

ステータスレジスタアクセス命令は、ステータスレジスタの内容を汎用レジスタとの間で転送します。

コプロセッサ

コプロセッサ命令は、ARM アーキテクチャの一般的な拡張方法をサポートします。これらの命令を使用して、CP15 システム制御コプロセッサレジスタを制御することもできます。


Show/hide関連項目

概念
参照

『アセンブラリファレンス』

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311