- 締切済み
アドレス指定について
ベースレジスタ修飾アドレス指定とはどのようなものなのですか?またどのようなときに役に立つのですか? 相対アドレス指定とはどのようなものなのですか?またどのようなときに役に立つのですか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jjon-com
- ベストアンサー率61% (1599/2592)
質問者の他の質問を拝見したのがきっかけで,普段は訪れないJavaカテゴリでたまたまこの質問を見つけました。 この種の基本概念についての平易な理解を得たいのなら,次のカテゴリがふさわしいのじゃないかなと思います。 ビジネス&キャリア > 資格 > 情報処理技術者 以下,教科書的な説明を。 基底レジスタ(ベースレジスタ)修飾は,プログラムの動的再配置のために用います。例えば,次のような仮定のモデルを考えた場合, プログラムA…10000番地から格納 プログラムB…20000番地から格納 プログラムC…30000番地から格納 この番地を絶対アドレスで指定してしまうと,各プログラムのメモリ格納位置の自由度が極端に制限されます。そこで, プログラムA…基底レジスタ格納値(10000)からの変位 プログラムB…基底レジスタ格納値(20000)からの変位 プログラムC…基底レジスタ格納値(30000)からの変位 のようにプログラム格納先頭番地を基底レジスタに設定することで,この問題を解決するわけです。 (自己)相対アドレス指定は,プログラムカウンタ(現在実行中の命令の格納番地)からの変位で実効アドレスを指定するものです。アセンブラ言語で記述されており現在の実行位置から何番地離れたところに変位先が存在するか明確に分かる,といった原始的なプログラミングにおいて主に用いられるとのこと。
- _ranco_
- ベストアンサー率58% (126/214)
プロセッサのメモリアドレシングについて、本で勉強してください。体験として、アセンブリ言語でミニ開発する機会があると、モアベターですね。 言葉そのもの、「ベースレジスタ修飾アドレス指定」等々にこだわらないように(だって、言い方はさまざまだから)。むしろ、アドレシングの様式を理解してください。
- _ranco_
- ベストアンサー率58% (126/214)
これはJavaの話題ではなく、プロセッサ、CPUの命令の、アドレシングパラメータ部の話です。ふさわしいフォーラムを探してください。本を読むのが、いちばんいいかな。アドレス部の値がnでも、それがベースレジスタ修飾アドレス指定なら、実際のアドレス値はベースアドレスの今の値+nになるんですよ。それが、相対アドレシングの一種です。ベースアドレス値とかぎらず、オフセット値があって、それプラス/マイナスnで実アドレスが決まる方式を、広義の相対アドレス指定(レラティブアドレッシング)というのじゃ。
お礼
回答ありがとうございます。 僕はまだまだ全然素人なので全く分かりません。 本を探したのですがベースレジスタ修飾アドレス指定という言葉が探し出せませんでした。 もう少し分かりやすく説明お願いします。 あとどのようなときに役に立つのかもお願いします。