
[ このメッセージへの返事 ]
[ 返事を書く ]
[ home.html ]

投稿者:
BOK @ kyt007.osk.threewebnet.or.jp on 97/9/22 02:45:51
In Reply to: Re: うーんむずかしい!
posted by 68user @ oryo.inforyoma.or.jp on 97/9/22 00:33:03
> あ、MIPSってR3000系なんですか? 初めて知ったっす(^^;
ちょっと違うと思う。ちょっとだけ。順番が。
細かい突っ込みごめんなさい。
本題ですが、
> add ...
> bne ...
>
> とあると、bneの演算が終るまでaddのフェッチができない。これでは
> パイプラインがストップしてしまう。そこで
これ、違ってるような気がします。
間違ってるかもしれませんが
フェッチできないのは、
add ...
bne ... tmp
nop
tmp:
lw ...
のような場合に
分岐先 tmp の lw ... のことではないでしょうか
>> でも、普通に書いたら
>> �晦晦�bne $21,$20,Loop
>> nop
>> �晦晦�add $8,$8,$9�晦晦� # h += $9
>> と、認識されてしまった。いやはや、奥が深い。(^^;)
>
> はどういうことでしょう。これはaddが実行されないような…
おそらく、
*手動で最適化して遅延スロットに命令が書いてあるのか
*ただ単に、遅延を考慮するのを忘れて次の命令をつめて書いちゃったのか
アセンブラが、判断できないためではないでしょうか。
命令の入れ替えを抑制する事ができればいいのですが。
GNU では、
.set noreorder
.set nomacro
bne ...
add ...
.set macro
.set reorder
てな感じで制御できませんか?

|