0
  1. 使えますか

orhi r8,r0,%hi(0xffffffff)

addi r8,r0,%lo(0xffffffff)

の代わり%hiadjorhi

  1. それともそうでなければならない

orhi r8,r0,%hi(0xffffffff)

ori r8,r0,%lo(0xffffffff)

%hiatを使用することを主張する場合orhi?

  1. %hiadj(0xffffffff)=の結果は0x0001?

  2. それならしないだろう

orhi r8,r0,%hi(0xffffffff)

addi r8,r0,%lo(0xffffffff)

0x0001ffffで生産r8?32 ビット アドレスは保持されません。

4

1 に答える 1

1
  1. はい、できますが、思ったとおりにはなりません。
  2. 前のori r8,r0,%lo(0xffffffff)命令の結果を上書きするので意味がありません。
  3. いいえ、それは0x0000( 0xffff + 1)
  4. 「それなら」でしょうが、そうではないので、そうではありません:)

addi符号拡張を使用し、 は%hiadjビット #15 を追加してそれを補正します。後orhi r8,r0,%hiadj(0xffffffff) r80x00000000。にaddi r8,r0,%lo(0xffffffff)アセンブルしaddi r8,r0,0xffffますが、その即時は実行時に CPU によって に符号拡張されます0xffffffff。これを に追加すると、0x00000000明らかに が得られ0xffffffffます。より良い例は、ロードしようとすること0x0001ffffです。ここで、拡張された符号を追加すると、再び正しい結果%hiadjが得られるようになります。0x000200000xffffffff

于 2016-03-08T12:56:39.263 に答える