メモリーモデル
読み:メモリーモデル
外語:memory model
x86シリーズの16ビットモード(リアルモード)に存在する、メモリーの使い方に応じたプログラミングモデル。
概要
x86は、従来の8ビットプログラミングとの互換性や効率などを配慮し、セグメント:オフセットという特殊なアドレッシング方式が採用された。
このため、他のプロセッサーでは必要ない様々な技術が必要となり、C/C++では、メモリーの使い方に応じたプログラミングモデルも用意された。これをメモリーモデルという。
特徴
一覧
規模順に、次のようなモデルに分けられる。どれに対応するかはコンパイラー次第である。
仕様
- タイニーモデル 最もコンパクトで、コードとデータを合わせて1セグメント(64Kiバイト)以内とする。
8ビットプログラミングとの互換性のために用意されている。
タイニーモデルのみCOMファイルとなり、それ以外は全てEXEファイルとなる。
- スモールモデル コードとデータが各nearポインター(64Kiバイト=1セグメント)で表わせる範囲でプログラミングする。
EXEファイルを作成するメモリーモデルとしては最軽量。
- ミディアムモデル/コンパクトモデル コードまたはデータの片方をfarポインター(20ビットのポインター)、もう片方をnearポインターで表わせる範囲でプログラミングする。
farポインターを使うメモリーモデルとしては最軽量。
- ラージモデル/ヒュージモデル コード・データ共にfarポインターで表わせる範囲でプログラミングする。大型のプログラムを開発するためのメモリーモデルである。
ラージモデルとヒュージモデルの違いは、一つの変数の最大サイズが、64Kiバイト(ラージ)か1Miバイト(ヒュージ)かの違いである
再検索