ゼロページ
ナビゲーションに移動
検索に移動
ゼロページ(英語:zero page)とは、一部のCPUにおいて、アドレス空間の開始アドレスがゼロ番地からはじまる一定範囲を特別な領域としていることをいう。
概要
MOS6502を例にすると、インデックスレジスタに0-255の値を指定すると、そのアドレスのゼロページ上のメモリが「256個の仮想的なレジスタ」として機能し、レジスタを介さずメモリ上で直接演算できるというものである。ゼロページはCPUの回路規模が小さかった時代にレジスタの相対的な不足を補うために考案されたものといえる。
また
- ゼロページへのアクセスは「2バイト長で3クロック」
- 非ゼロページへのアクセスは「3バイト長で4クロック」
という高速化が見込める利点もあった。
ゼロページの採用例としてはPDP-8やファミコンなどに採用されたMOS6502系の256バイトが有名。 どちらも汎用レジスタ(アキュムレータ)が1個しかないため、ゼロページを使う大前提となっている。
近代
ゼロページは超古代のオーパーツで使われた技術であり現在ではほぼ使われていない。 しかし、一部のコンピュータアーキテクチャでは、アドレス空間の先頭が予約されている。
たとえば、Intel x86では、リアルモードで実行されている場合に割込みテーブルの最初の512ワードのアドレス空間が確保される。
また、 FreeBSD、Linux、Windowsなどでは近代ではゼロページが予約されていて誰も使わない大前提で「NULLポインタ」としていることが多い。 C言語でいうとこんな感じである。
#define NULL ((void*)0);