Re: MIPSは良く分かりませんが...



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



投稿者: movem.l d0-d7/a0-a5,-(sp) @ h012.p066.iij4u.or.jp on 97/9/21 01:31:13

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の場合どうなる
> んでしょうか?
>

理解するのに時間がかかりました...。(^^;)

おそらく、Astartの部分はアドレスを指定するところではないと思います。
普通は$19をベースアドレスとして、そこからのオフセットを定数で指定する場合に使用されるのでは?

例) a[2]をアクセスする場合 ( $19=&a[0],Size=sizeof(a[0]) )
 lw $8,Size*2($19)  # $8=a[2]

こんな感じです。
上記のようにa[i]の様なアクセスを行う場合は、その都度、自分で絶対アドレスを求めてやる必要が有ります。

# やっぱアセンブラは68系だよなぁ