宇宙誕生の少し前から宇宙終焉の少し先までを数で表す論文

この宇宙を数で表すことは出来るのか。

第1-5節 アドレス指定とメモリマップ


















目次

アドレス指定とメモリマップ

CPUはデータや命令そのものを
直接扱うのではなく、
アドレスを指定して
メモリにアクセスします。

この仕組みを理解することは、
プログラムの実行原理や
OS・ハードウェア制御を理解する上で
非常に重要です。

アドレスとは何か

アドレスとは、
メモリ上の位置を示す番号です。

CPUは
「どこにあるデータを読むか」
「どこに結果を書き込むか」
をアドレスによって指定します。

このとき、
メモリアドレスレジスタ(MAR)が
指定されたアドレスを保持します。

基本的なメモリアクセスの流れ


命令実行
  ↓
アドレス計算
  ↓
PC / レジスタ → MAR
  ↓
Memory → MDR
  ↓
レジスタ / ALU


CPUは常に
「アドレス → データ」
という手順で動作しています。

アドレッシング方式

命令がどのようにアドレスを指定するかを
アドレッシング方式と呼びます。

方式 概要
即値アドレッシング 命令内に値そのものを含める
直接アドレッシング 命令内にメモリアドレスを指定する
間接アドレッシング 指定したアドレス先に実際のアドレスがある
レジスタアドレッシング レジスタに格納された値を使う
相対アドレッシング 現在位置からの差分で指定する

これらを組み合わせることで、
柔軟で効率的な命令実行が可能になります。

メモリマップという考え方

メモリマップとは、
アドレス空間全体を
どの用途に割り当てるか
を整理したものです。


0x00000000  ─ プログラム領域
0x00100000  ─ データ領域
0x7FFFFFFF  ─ ユーザー空間上限
0x80000000  ─ OS / カーネル領域


CPUはこの配置を意識せず、
単にアドレスを指定しますが、
OSやハードウェア設計では
非常に重要な概念です。

メモリマップドI/O

一部のシステムでは、
周辺機器の制御レジスタを
メモリ空間の一部として配置します。

これを
メモリマップドI/O
と呼びます。

CPUは通常のメモリアクセスと
同じ命令で、
デバイス制御を行えます。

アドレス空間の保護

現代のCPUでは、
ユーザープログラムが
OS領域を直接操作できないよう、
アドレス空間が分離されています。

これにより、
1つのプログラムの暴走が
システム全体に影響することを
防いでいます。

第5節のまとめ

  • CPUはアドレス指定によってメモリにアクセスする
  • アドレッシング方式が命令の柔軟性を決める
  • メモリマップはアドレス空間の設計図である

次に読むべき節