- 締切済み
アドレス指定について
ベースレジスタ修飾アドレス指定とはどのようなものなのですか?またどのようなときに役に立つのですか? 相対アドレス指定とはどのようなものなのですか?またどのようなときに役に立つのですか?
- ryunan_198
- お礼率64% (92/142)
- Java
- 回答数3
- ありがとう数2
- みんなの回答 (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で実アドレスが決まる方式を、広義の相対アドレス指定(レラティブアドレッシング)というのじゃ。
関連するQ&A
- インデックスアドレス指定方式とベースアドレス指定方式の違い
アドレス指定方式(アドレシング)についての質問です。 タイトルの通り、インデックスアドレス指定方式とベースアドレス指定方式の違いを教えていただきたいです。 参考書などでは、 ●インデックスアドレス指定方式 ・命令の番地部とインデックスレジスタの値を加算した値を有効アドレスとする ・インデックスレジスタの内容を変えるだけで別なアドレスの内容が参照できる ●ベースアドレス指定方式 ・命令の番地部が指定するアドレスに、ベースレジスタの内容を加算した値を有効アドレスとする ・ベースレジスタの値を変えるだけでプログラムが主記憶装置のどこからでも実行できる(再配置可能) となっています。 有効アドレス=番地部のアドレス+レジスタの値 となるのが同じで、基準となる値がインデックスアドレス指定方式のほうでは命令の番地部であり、ベースアドレス指定方式のほうはベースレジスタの値、ということまではわかったのですが、この「基準」が違うことでどういう違いがあるのか、具体的にどういう場合にどちらの方式が使われるのかがわかりません。 ベースアドレス指定方式の「再配置可能」という部分もどういう仕組みなのか、よくわからないです。 ご回答、よろしくお願いいたします。
- ベストアンサー
- その他(OS)
- アドレス指定方式
はじめまして、大学で情報処理の勉強をしているものです。 質問なのです。 アドレス指定方式って、 ・即値アドレス指定方式 ・絶対アドレス指定方式 ・間接アドレス指定方式 ・インデックスアドレス指定方式 ・相対アドレス方式 ・ベースアドレス指定方式 となんでこんなにたくさんの方式があるのですか?上の2つは理解できるのですが、それ以外の方式がある理由すらよくわかりません。
- ベストアンサー
- ハードウェア・サーバー
- アドレス指定モード(基本情報処理試験)について
基本情報処理試験本の中に出てくる、「アドレス指定モード」即値アドレス指定、レジスタアドレス指定、ベースアドレス指定、等々、知識としてはよく解るのですが、実際のところ、どれを使ってコンピュータは計算しているのでしょうか。
- ベストアンサー
- その他(OS)
- アドレス指定方式での、命令語が参照する番地
16進数で”C13B0206”という32ビットの命令語があります。 <命令語の仕様> 0~7ビット:命令指示部 8~10ビット:レジスタ 11~15ビット:アドレス修飾部 16~31ビット:番地 <アドレス修飾と参照番地の関係> 00 0固定 直接アドレス (11,12の値が00、13~15の値が0固定のとき、直接アドレス。) 01 0固定 間接アドレス 10 インデックスレジスタ インデックスレジスタ+番地の値 11 インデックスレジスタ インデックスレジスタ+番地が示す内容の値 <主記憶、レジスタの状態> ●主記憶に格納されている値(16進数) 番地(16進数)が 202,203,204,205,206,208,209,20A...の順に、それぞれの格納値は、 203,204,205,206,208,209,20A,20B...。 ●インデックスレジスタに格納されている値(16進数) インデックスレジスタ番号(16進数)が1,2,3,4,5… の順に、それぞれの格納値は、 0,1,2,3,4…。 (1) アドレス修飾部のインデックスレジスタ番号。 命令語の”C13B0206”で、アドレス修飾部にあたるのが”3B”。00111011(2進数)。8~10ビットの001がレジスタになるから、3。 (2)命令の番地部の番地の値(16進数) 命令の番地部の番地の値。命令部では、”0206”。ちょうど16進数なので、206。 (3) 命令が最終的に参照する番地。 上の、<主記憶、レジスタの状態>より、11~15ビットが”1011”。 インデックス番号が11(2進数)なので、3(16進数)。インデックスレジスタ番号が3のとき、格納されているのは2。番地の値である206と3を合わせ、209。 最終的に参照される番地は209。 (1)(2)(3)、自分の解き方が正しいのかどうか自信がありません。どなたか補足、訂正などありましたら、よろしくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- アドレスレジスタは物理的に存在しますか?
情報系の勉強している、初心者です。 アドレス修飾というところを今勉強中です。 命令が読み出しから実行終了までのステップを 段階 関係するレジスタ等 1. 命令の取り出し:命令アドレスレジスタ,命令レジスタ 2. 命令の解読:デコーダ,演算装置(演算命令の場合) 3. 有効アドレス計算:アドレスレジスタ,主記憶装置 4. データの取り出し5. 命令の実行:演算装置(演算命令の場合) 6. 演算結果格納:主記憶装置 ・・と説明しています。(一部省略している部分があります。) そこで、この流れが意味することがいまいちつかめないし、覚えられないので パソコンの中をみて確かめようと思いました。 使っているノートパソコンのメモリーは取り出せました。が、一番知りたかったCPUはどこにあるのか分からなかったので、インターネットでアドレスレジスタや命令レジスタを視覚的にとらえられないかといろいろ調べましたが・・イメージ図は出てくるのですが写真は見つけられませんでした。 アドレスレジスタ・デコーダ等が実際に存在するのか、アドバイスお願いします。
- ベストアンサー
- その他(パソコン)
- 相対アドレスについて
実行ファイルが以下のようなディレクトリに 置かれています。 \hoge ├a.exe ├\aaaa │ ├b.exe │ └\bbbb └\bbbb a.exeの中でb.exeを呼び出します。 b.exeの中で相対アドレスでbbbbを指定したところ hoge直下のbbbbを指定したように動作します。(aaaa直下のbbbbではなく!) どこかの中から呼び出されたexeの指定する相対アドレスは はじめに起動したexeからの相対アドレスになるのでしょうか? それともこれは環境によるのでしょうか? a.exeはhspで、b.exeはcで作っています。
- ベストアンサー
- その他(プログラミング・開発)
- <base>を範囲指定
<base>を範囲指定したいと思っています。しかし、仕様でできないとのことですので、何か代替策はないでしょうか? phpで、print'~'を使って、<?php function menu(){ print '色々とメニューを記述'; ・ ・ } ?> という、フレームのようなものを作って、 それを普通のページに <table><tr><td> <?php require_once('menu.php'); menu() ?> </td><td>メインコンテンツ</td></tr></table> みたいな感じで表記したいと考えています。 しかし、こうすると、phpで生成したメニューで、相対パスによる指定ができなくなってしまいます。 絶対パスで指定してしまうと、ローカルホストでの確認ができなくなってしまいます。 <base href="http://localhost/">というようにして、これを</base>といったように閉じることができれば良いのですが、できないので、他の部分の相対パスが狂ってしまいます。 何か代替案の思いつく方、いらっしゃいましたらよろしくお願いいたします。
- ベストアンサー
- HTML
- URLの相対指定について
いま、BASEタグを使ってURLを相対指定して、簡略化をしているHTML文書があります。 このHTML内で、もう一つ別の相対指定の基準を指定する方法はあるのでしょうか? リンクの位置関係は簡単に書くと下のようになってます。 Web Site +-HTML文書 +-リンク先のファイル(複数) Local +-リンク先のファイル(多数) Localのリンク先のファイルが多数あるので、 いちいち<A href="file:///.....と書くのがいやなので、 BASEタグによる基準をLocalのフォルダにしています。 しかし、こうするとWeb Site上へのリンクはいちいち、 <A href="http://.....と絶対指定しなければなりません。 これを回避したいのです。
- 締切済み
- HTML
お礼
回答ありがとうございます。 僕はまだまだ全然素人なので全く分かりません。 本を探したのですがベースレジスタ修飾アドレス指定という言葉が探し出せませんでした。 もう少し分かりやすく説明お願いします。 あとどのようなときに役に立つのかもお願いします。