- 締切済み
アセンブラのLA
毎度、お世話になっています。 現在、汎用機のアセンブラの仕事をやっておりますが、 下記の意味(必要性)がわかりません。 ご存知の方、意味を教えてください。 LA R3,0(,R3) ※R3は、R3以外でも構いませんが、第2オペランドと 第1オペランドのレジスターは同じです。 なお、下記の計算がR3+1(R3を示すアドレス+1)で あることは知っています。 LA R3,1(,R3)
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Kon1701
- ベストアンサー率24% (1445/5856)
アセンブラの仕様が分からないので、推測も入りますが・・・。 値の0判定、正負の判定などを行っている可能性が有ります。 たとえば値の比較して条件分岐する場合、直前の命令によってゼロ、正負などのフラグが設定され、その結果によって分岐を行います。一般には比較の命令を使うのですが、そのような命令でなくても処理の結果によってフラグが設定されます。それを利用している可能性はあります。 何でそんなことを? と思われるかもしれませんが、比較よりも別の命令の方がたとえば1クロックはやいとか、というのがあれば使用する可能性はあります。 割り込み処理などで似たようなコーディングをしたことはあります。ただ、コメントをしっかり書いておかないと、自分でも忘れてしまっていることも有ります・・・。
- JaritenCat
- ベストアンサー率37% (122/322)
LoadAddressでしょうか。 副作用でフラグレジスタがクリアされているとか? マニュアルとかないのでしょうね。。。
- ta123
- ベストアンサー率51% (95/186)
汎用機によってアセンブラの仕様が変わるので想像になりますが、アドレス計算を調査されると分かると思います。 左からの何ビットかが0(ゼロ)になるのでは。 レジスタが32ビットで論理空間が28ビットの場合左の4ビットが0になりそう。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
レジスタの値で フラグのセットをする とか
お礼
ご回答ありがとうございます。 そうですね。左から何ビットかを0にしていると 思います。ですが、なぜ必要なのかが不明です。 その後の処理フローをみても、先頭何ビットかを 0にする必要性があるとは思いません。 パラメータを親モジュールからもらったりするときの 作法のようにも見えますが、はっきりわかりません。