1

それらを設定するには、 Sを追加する必要があることを理解しています。

ADDS R0,R1,R2

たとえば、結果がオーバーフローした場合に C を設定します。

  • 次のように言うのは正しいですか。

次のような前の行に続く別のコード行:

SUB R3,R4,R5

条件フラグをまったく変更しませんか? ( Sがないため)

  • その後、コードの#行に関係なく、条件フラグの次の変更は、 S が追加された操作の次の行でのみ発生しますか?

  • さらに、条件フラグビットの以前の状態は、現在の操作の結果に完全に依存してクリアまたは設定されるため、条件フラグの設定方法には影響しません

現在の操作の結果が一部の条件ビットに影響しない場合はどうなりますか? 例えば

ANDS R0,R1,R2 

結果はキャリーCまたは符号付きオーバーフローZを生成できないため、それらに関連するN,Zフラグのみを持ちます。そのような場合、C、Zフラグは保存されますか、それともクリアされますか?

いつ設定されるかを見るのは簡単ですが、私が見ている講義や本は、いつクリアできるかを正確に説明するのが非常に曖昧であるため、具体的なことを得るためにここで質問しました.

4

3 に答える 3

1

ARM のマニュアルをお読みください。

これはどのように曖昧ですか?

if S == 1 then
N Flag = Rd[31]
Z Flag = if Rd == 0 then 1 else 0
C Flag = shifter_carry_out
V Flag = unaffected

各フラグは明確に定義されています。Unaffected は、影響を受けないことを意味します。残りはANDSによって変更されます

同じく:

If S is omitted, the S bit is set to 0 and the CPSR is not changed by the instruction.

「指示によって変更されていない」について漠然としているのは何ですか?

于 2013-06-13T03:24:45.300 に答える