
[ このメッセージへの返事 ]
[ 返事を書く ]
[ 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にオーバーした分を加算するような
�灰魁璽匹鮴言�してくれる
のどちらでしょうか。あるいはそれ以外でしょうか。
ぜひ教えてください。

|