[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
気にしたことがないのだが、基本情報に出てくる難問の1つとして知られているらしいのがアドレス指定方式に関する問題。確かに読んでみると難問に見える。
住所の指定方法、と考えればよいだろう。
よくアドレス指定方式の話でオペランド部という言葉が出てくる。このオペランド部に住所を入力する……が。住所の指定方法にも色々あり、その指定方法をなんちゃら指定と呼んでいる。
命令部:オペランド部に書いてある人に荷物を渡して
オペランド部:東京都新宿区新宿6丁目27番30号 に住んでいる人
超単純である。場所を直接指定である。東京都新宿区新宿6丁目27番30号
に荷物を届けてね、みたいなやつである。ちなみに、スクウェア・エニックスの本社所在地である。
ただ、プログラミングではあまり使いたくない。柔軟に色々やることができないので不便なのだ。「先頭のやつを」とかそんな感じの指定をするときにはこいつの考え方。
命令部:オペランド部に書いてある人に荷物を渡して
オペランド部:大阪府大阪市淀川区西中島4-13-1 に住んでいる人が教えてくれた住所に住んでいる人
もう少し柔軟に使えるのがこれである。東京都新宿区新宿6丁目27番30号
にいくと「ここにお願いね」と別の住所を指定される。
こいつは直接アドレス指定より使いやすい。何故だろうか。プログラムを書き換えるにはいろいろと面倒なのだ。それくらいだったら記憶装置の方を書き換えた方が楽だ。
例えば、["東京都新宿区新宿6丁目27番30号", "東京都港区芝5-37-8", "大阪府大阪市北区本庄西2-12-16"]
の三か所に何かを届けたいとする。
そうすると、直接アドレス指定方式だと次のように書く。
問題は「違うところに届けたいとき面倒だよね。プログラムを書き換えるのは大変だから」ということだ。そこで、次のように書く。
プログラムと違い、紙は書き換えるのが簡単だ。住所変更は先ほどより格段に楽になった。
命令部:オペランド部に書いてある人に荷物を渡して
オペランド部:この紙に書かれた場所の三件となり に住んでいる人
このあたりから難しくなる。
スタート地点 (= 基底 / ベース) となる場所を決め、そこからの距離でアドレスを指定する。
つまり、「ココから三件隣に届けて」とかになる。ココは 東京都新宿区新宿6丁目27番30号 かもしれないし 東京都港区芝5-37-8 かもしれない。実行する場所によって何が起こるのかが変わるので、何かを書き換えなくても動きが変わるのが便利だ。
スタート地点はベースレジスタ、という所に書かれる。
命令部:オペランド部に書いてある人に荷物を渡して
オペランド部:この紙に書かれた場所の三件となり に住んでいる人
基底アドレス指定と基本的には変わらない。今いる場所を基準にしてどこに、という指定方法である。
ただし、この場合はベースレジスタではなく、プログラムカウンタと呼ばれる現在位置を示す所に書かれた場所がスタート地点となる。ベースレジスタが無い場合に使われたりする。利点は基底アドレス指定と同じ。
命令部:オペランド部に書いてある人に荷物を渡して
オペランド部:ここの三件となり に住んでいる人
こちらも基本的には変わらず、スタート地点からの距離で記述する。ただ、スタート地点がオペランド側に書かれ、移動距離がインデックスレジスタ、という所に書かれる。その為、「3件飛ばしに訪問して」とかそういう指示をやるのに適している。
命令部:オペランド部に書いてある人に荷物を渡して
オペランド部:この人
アドレスを特に指定しない。「住所は指定しない、受取人が直接来た」みたいな感じである。もちろん、柔軟にプログラミングはできないし、大きなデータも扱えない。でも、届ける時間が要らないのでとにもかくも速いプログラムができる。
ただいまコメントを受けつけておりません。