2

値が r1 レジスタにロードされるアドレスはどのように計算されますか?

_start:
    ldrh   r1, [pc, #6]

PC の値 = 8054 (ldrh 命令のアドレス)

私によると、アドレスの値は次のようになります: PC + 6 = 805A

そのため、アドレス 805A の値をレジスタ r1 にロードする必要があります。

4

1 に答える 1

5

ARM モードか Thumb モードかによって異なります。

ARM モードの場合:

ベース レジスタとして使用する場合R15は、現在の命令のアドレスから 8 バイト先のアドレスが含まれていることを覚えておく必要があります。

親指モードの場合:

の値は、PCこの命令のアドレスよりも 4 バイト大きくなりますが、ビット 1PCは強制的に 0 に設定され、ワー​​ド アラインされます。

于 2013-08-20T09:04:44.243 に答える