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



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



投稿者: 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にオーバーした分を加算するような
�灰魁璽匹鮴言�してくれる

のどちらでしょうか。あるいはそれ以外でしょうか。
ぜひ教えてください。