
[ このメッセージへの返事 ]
[ 返事を書く ]
[ 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系だよなぁ

|