SUBS PC、lr

スタックから何もポップしない例外からの復帰です。

Show/hide構文

SUBS{cond} pc, lr, #imm               ; ARM および Thumb コード
MOVS{cond} pc, lr                     ; ARM および Thumb コード
op1S{cond} pc, Rn, #imm               ; ARM コードのみで、非推奨
op1S{cond} pc, Rn, Rm {, shift}       ; ARM コードのみで、非推奨
op2S{cond} pc, #imm                   ; ARM コードのみで、非推奨
op2S{cond} pc, Rm {, shift}           ; ARM コードのみで非推奨

各パラメータには以下の意味があります。

op1

ADCADDANDBICEORORNORRRSBRSCSBC、および SUB のいずれかを指定します。

op2

MOV および MVN のいずれかを指定します。

cond

任意の条件コードを指定します。

imm

イミディエート値を指定します。Thumb コードでの範囲は 0 ~ 255 に制限されています。ARM コードではフレキシブル第 2 オペランドを指定します。

Rn

第 1 オペランドレジスタを指定します。LR 以外のレジスタの使用は非推奨です。

Rm

オプションでシフトされた第 2 または唯一のオペランドレジスタを指定します。

shift

任意の条件コードを指定します。

Show/hide使用法

SUBS pc, lr, #imm では、リンクレジスタから値を減算し、結果を PC にロードして、SPSR を CPSR にコピーします。

スタックに復帰状態がない場合、SUBS pc, lr, #imm を使用して例外から復帰できます。#imm の値は、復帰する例外の種類によって異なります。

Show/hide注釈

SUBS pc, lr, #imm では、アドレスを PC に書き込みます。例外復帰後に使用される命令セットに合わせて、このアドレスの境界整列を調整する必要があります。

  • ARM 命令セットに復帰するには、PC に書き込むアドレスをワード境界で整列する必要があります。

  • Thumb 命令セットに復帰するには、PC に書き込むアドレスをハーフワード境界で整列する必要があります。

  • Jazelle 命令セットに復帰する場合、PC に書き込むアドレスの境界整列について、制限はありません。

これらの規則に違反した結果は、予測できません。ただし、適切な例外開始メカニズムの後で復帰するために命令を使用する場合、ソフトウェア側に特別な予防策は必要ありません。

Thumb では、SUBS{cond} pc, lr, #imm のみが有効な命令です。MOVS pc, lrSUBS pc, lr, #0 と同じ意味です。他の命令は定義されていません。

ARM では、SUBS{cond} pc, lr, #imm および MOVS{cond} pc, lr のみが有効な命令です。ARMv6T2 以降では、他の命令は非推奨です。

Caution

これらの命令は、ユーザモードやシステムモードでは使用しないで下さい。このような命令の効果は予測できませんが、アセンブラはアセンブリ時に警告することはできません。

Show/hideアーキテクチャ

この ARM 命令は、ARM アーキテクチャのすべてのバージョンで使用できます。

この 32 ビット Thumb 命令は、ARMv6T2 以降で使用できます。ただし、ARMv7-M アーキテクチャでは使用できません。

この命令の 16 ビット Thumb バージョンはありません。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489FJ
Non-ConfidentialID111211