> 2007/03/24 (土) 17:43:09 ◆ ▼ ◇ [qwerty]> > リロケータブルなプログラムを作る場合
> > 配列a[10]からなるワンセットのプログラムを
> > メモリ上のセグメント100~110から
> > 違うセグメントの200~210に移して実行したい場合
> > ベースアドレス指定方式であれば
> > ベースレジスタ中の値を100から200に書き換えれば簡単にできるってことらしいけど
> > インデックスアドレス指定方式であっても各々の命令語中のインデックスレジスタアドレスが指し示す
> > インデックスレジスタの値に+100すれば可能なんでは?(;´Д`)
> > http://oshiete1.goo.ne.jp/qa2079427.html
> > ここの1番目の回答で
> > >2は相当難しいです。
> > と書いてる理由がいまいちわからん(;´Д`)
> +100ってのはいつわかるの?(;´Д`)+200かもしれないし+300かもしれない
> もし「わかる」のであればその時点でそれはベースアドレス指定方式なんじゃないの?
ああそうか!(;´Д`)
確かにすでにメモリー空間上に確保されている配列中の
添え字を順に参照していくだけならすでにアドレスがわかってるけど
新しいセグメントに移す場合は必ずしも指定のアドレスとは限らないのか
だからロード時に先頭のアドレスが自動的に書き込まれるベースアドレス方式なのね
くしこくしこ
参考:2007/03/24(土)17時32分52秒