Re: アセンブラに詳しい方教えてください



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



投稿者: いやーん成人 @ ppp03015.chiba.alles.or.jp on 97/9/20 21:47:48

In Reply to: アセンブラに詳しい方教えてください

posted by 68user @ oryo.inforyoma.or.jp on 97/9/20 19:44:29

> a[i] = h + a[i];
>
> をMIPSのアセンブラで書くと
> # $18=h、$19=i*sizeof(i)、Astart=&a[0]
>
> lw $8,Astart($19)�� # $8=a[i]
> add $8,$18,$8�晦晦� # $8+=h
> sw $8,Astart($19)�� # a[i]=$8
>
> となりますが、lwのAstartの部分はマシン語では16bit分しか
> 指定することができません。すると&a[0]>=2^16の場合どうなる
> んでしょうか?
>
> 1、Astart に 2^16 以上の値を入れることはできない。
> �灰罅璽兇� Astrat>=2^16 とならないように気をつけて、もし
> ��Astrat>=2^16 ならば $19にオーバーした分を加算しなければ
> �海覆蕕覆ぁ�そもそもRISCなんだからアセンブラで書くな。
> �灰灰鵐僖ぅ蕕鮖箸─�
>
> 2、lw は疑似命令である。
> �灰▲札鵐屮蕕� Astart>=2^16 かどうかをチェックし、もし
> ��Astrat>=2^16 ならば $19にオーバーした分を加算するような
> �灰魁璽匹鮴言�してくれる
>
> のどちらでしょうか。あるいはそれ以外でしょうか。
> ぜひ教えてください。

コンパイラをもっているなら
コンパイラが吐き出すアセンブラソースをみなされ。
大概のコンパイラは −Sオプションでアセンブラコード
をはきだします。

もっていないなら
使っているアセンブラのマニュアルをみれば、
擬似命令の展開仕様とかものっているとおもう。

やはりRISCといえどもコアなところは人間様が
アセンブラで、遅延分岐を駆使しキャッシュ効率まで
あやつるのがプロでしょう。