「ARM11TechnicalRefManual」のセクション1-34の「Thumb命令セット」の下に、次のように書かれています。
「Thumb命令セットは、最も一般的に使用される32ビットARM命令のサブセットです。Thumb命令は16ビット長であり、プロセッサモデルに同じ影響を与える対応する32ビットARM命令があります。」
誰かがこの特に2番目の文についてもっと説明し、プロセッサがそれをどのように実行するかを言うことができますか?
「ARM11TechnicalRefManual」のセクション1-34の「Thumb命令セット」の下に、次のように書かれています。
「Thumb命令セットは、最も一般的に使用される32ビットARM命令のサブセットです。Thumb命令は16ビット長であり、プロセッサモデルに同じ影響を与える対応する32ビットARM命令があります。」
誰かがこの特に2番目の文についてもっと説明し、プロセッサがそれをどのように実行するかを言うことができますか?
ARM プロセッサには、命令がすべて 32 ビット長である従来の ARM セットと、最も一般的な命令が 16 ビット長 (一部は 32 ビット長) である、より圧縮された Thumb セットの 2 つの命令セットがあります。実行する命令セットは開発者が選択でき、アクティブにできるセットは 1 つだけです (つまり、プロセッサが Thumb モードに切り替わると、すべての命令が ARM ではなく Thumb を使用するものとしてデコードされます)。
これらは異なる命令セットですが、同様の機能を共有しており、同じアセンブリ言語を使用して表すことができます。たとえば、
ADDS R0, R1, R2
ARM (E0910002 / 11100000 10010001 00000000 00000010) または Thumb (1888 / 00011000 10001000) にコンパイルできます。もちろん、エンコーディングが異なっていても、同じ機能を実行します (r1 と r2 を加算し、結果を r0 に格納します)。これは、Thumb 命令が 16 ビット長であり、プロセッサ モデルに同じ効果を持つ対応する 32 ビット ARM 命令があることを意味します。
Thumb エンコーディングのすべての * 命令には、対応する ARM エンコーディングもあり、これは「サブセット」文によって意味されます。
*: 厳密には当てはまりません。ARM には "IT" 命令はありませんが、ARM には "IT" は必要ありません (アセンブラによって無視されます)。