IT未経験の私が
基本情報技術者試験の勉強をしていて、
つまずいたところや疑問に思った点を
アウトプットするシリーズです。
同じく基本情報技術者試験の勉強をしている方の参考になったら嬉しいです♪
試験合格を目指した覚え方・考え方かつ未経験独学なので、
実務的な理解方法とは異なる場合があります。
Contents
今回のテーマ:アドレス指定方式
今回は、アドレス指定方式について理解していきます。
範囲情報
・科目A:テクノロジ系
・コンピュータ構成要素
基本的な部分なのでしっかり理解しておくべき!
今回の用語
CPU
CPUとは、いわゆるコンピュータの頭脳部分のことです。
たとえば、コンピューターに「ゲームをする」とか
「絵を描く」といったお仕事をお願いするとします。
そのとき、何をどうすればいいか考えて、命令を出す役割をするのがCPUです。
CPUとは、命令を受け取って
その命令をどんどん処理していく機械のこと。
もしCPUがいなかったら、
コンピューターは何をしていいか分からなくなります。
CPUはコンピューターの中で
すごく大事な存在ってこと!
CPUは演算装置と制御装置により成り立ちます。
※今回はあまり気にしなくてOK
主記憶
CPUが考える役割だとすると、
CPUが使う情報がないと考えることができませんよね。
その情報を置いておくメモのようなものを主記憶と言います。
CPUと同じく、なくてはならない存在!
CPUだけでは考える材料がないし、
主記憶だけでは考えることができないので、
お互いを助け合っているイメージです◎
命令語
コンピュータは人間の言葉を理解することができません。
そこで役に立つのが命令語(機械語とも言われます)。
CPUの制御装置に組み込まれています。
命令語は、命令部とアドレス部(オペランド部とも言われます)により成り立ちます。
命令語=命令部+アドレス部(オペランド部)
例)
1+2という式をコンピュータが理解するためには、
1,2はアドレス部、+は命令部が担当し、命令語を作ります。
アドレス指定方式とは
アドレス指定方式とは、
コンピュータが「どこに何があるか」を見つけるための方法のことです。
たとえば、ゲームの中で宝箱を探すとき、
「〇〇の町の、△△の家の、右上の部屋に宝箱があるよ」
って教えてもらったら、その場所を見つけやすくなりますよね。
この「〇〇の町」とか「△△の家」みたいに、
コンピューターが「データがどこにあるか」を覚えるための番号をアドレスと言います。
アドレス指定方式は、その住所(アドレス)を使って
「このデータを取りに行ってね!」と命令を出す仕組み。
各アドレス指定方式について
アドレス指定方式は実は6種類あるんです。
各方式について、解説します。
各方式(クリックで飛びます)
直接アドレス指定方式
直接アドレス指定方式は、その名の通り
アドレスを直接指定する方式です。
主記憶はたくさんの情報を
番号付きの引き出しに入れていて、
アドレス部が必要な情報の
引き出しの番号を伝えているようなイメージですね◎
間接アドレス指定方式
間接アドレス指定方式は、これもまたその名の通り、
間接的にアドレスを指定している方式です。
つまり、「住所を教えてくれる人にまず聞いてから、その住所を見に行く」というやり方!
たとえば、「宝箱の場所を教えて!」と言われたときに、
直接「△△の家にあるよ」と教えるんじゃなくて、
まず「地図を見て〇〇の町に行ってね。そしてそこで△△の家の住所を見つけて!」と教える感じです。
指標アドレス指定方式
指標アドレス指定方式は、コンピューターがデータを探すときに
「基準となる場所」から少しズレた場所を見に行く方法です。
たとえば、宝物探しをするとき、
「〇〇の町の中央広場から、
北に3歩行ったところに宝物があるよ!」
と言われたとします。
この場合「〇〇の町の中央広場」が基準(指標)です。
そこから「北に3歩」というズレを加えて、
本当に宝物がある場所を見つけます。
基準 + ズレで宝物を探すということだね!
指標アドレス指定方式では、
「基準となるアドレス(指標)」は
特定のレジスタ(指標レジスタ)に格納されており、
その指標に「ズレ(アドレス部)」を足して、
最終的なアドレスを計算する方式です。
つまり、指標レジスタ(基準)+ ズレ(アドレス部)で探しに行く場所を見つけます。
基底アドレス指定方式
基底アドレス指定方式は、指標アドレス指定方式と似ています。
「クラス全員がロッカーを使っている場面」で例えてみましょう。
クラスみんなのロッカーの最初の番号を基底アドレスレジスタと言います。
たとえば、「Aさんのロッカーは1番からスタート」というのが基底アドレスです。
そこから何番目のロッカーかをズレ(アドレス部)とします。
例えば、「1番から3つ先」なら、
「3つ目」というズレを使って
「4番目のロッカー」を探す、というもの。
指標アドレス指定方式と基底アドレス指定方式の違い
指標アドレス指定方式
→ 指標レジスタには「自分が今立っているロッカーの位置」が入っています。
ズレ(アドレス部)を使って、「今の場所からどれだけ動くか」を計算して次のロッカーを探す。
例:今いる場所が10番のロッカー(指標レジスタに10が入っている)。
ズレ(アドレス部)が「+3」なら、13番のロッカーを探しに行く。
基底アドレス指定方式
→ 基底アドレスレジスタには「ロッカーの最初の場所(基準)」が入っている。
ズレ(アドレス部)を使って、その基準からどれだけ離れた場所を探す。
例:ロッカーの基準が1番(基底アドレスレジスタに1が入っている)。
ズレ(アドレス部)が「+3」なら、4番のロッカーを探しに行く。
相対アドレス指定方式
「自分が今いる場所」から、
「どれくらい進めば目標に着くか」を
教えてくれる地図を想像してみてください。
現在位置が「駅」だとします(これがプログラムカウンタの役割)。
地図に「200メートル先に公園があるよ」と書いてあります(これがズレ)。
この情報だけで「駅から200メートル進んだ先に公園がある」と分かりますよね。
これが相対アドレス指定方式の考え方です。
3つのアドレス指定方式の違い
指標アドレス指定方式 → 現在操作中の指標が基準
基底アドレス指定方式 → 固定された基準が基準
相対アドレス指定方式 → 今実行中の命令が基準
即値アドレス指定方式
名前の通り、値を直接入れるもののことです。
1番分かりやすいかも!
まとめ:アドレス指定方式を完全解説
アドレス指定方式は、コンピュータが
どのデータや命令を使うかを指定する方法のことです。
それぞれの方式には特徴があり、用途によって使い分けられます。
方式 | 基準 | 用途 | メリット | デメリット |
直接 | 固定されたアドレス | 簡単なデータ操作 | 簡単で分かりやすい | 柔軟性が低い |
間接 | アドレスが示す別の場所 | メモリの柔軟な操作 | 柔軟性が高い | アクセスが遅い |
指標 | 指標レジスタ | 配列やリスト操作 | 配列処理が簡単 | 指標レジスタが必要 |
基底 | 基底アドレスレジスタ | プログラム全体や 安全なメモリ管理 |
安全性が高い | 基底アドレスの設定が必要 |
相対 | 現在の実行位置(PC) | 分岐処理やループ処理 | 分岐やジャンプに便利 | 現在位置が必要 |
即値 | 値そのもの | 条件判定や定数の利用 | シンプルで効率的 | メモリデータ操作不可 |
以上、お役に立てると嬉しいです♪