メモリーモデル

読み:メモリーモデル
外語:memory model 英語
品詞:名詞

x86シリーズの16ビットモード(リアルモード)に存在する、メモリーの使い方に応じたプログラミングモデル。

目次

x86は、従来の8ビットプログラミングとの互換性や効率などを配慮し、セグメント:オフセットという特殊なアドレッシング方式が採用された。

このため、他のプロセッサーでは必要ない様々な技術が必要となり、C/C++では、メモリーの使い方に応じたプログラミングモデルも用意された。これをメモリーモデルという。

一覧

規模順に、次のようなモデルに分けられる。どれに対応するかはコンパイラー次第である。

モデルポインターセグメントレジスター最大サイズ
コードデータ
タイニーモデルnearCS=DS=SS=ESCS+DS+SS≦64Ki
スモールモデルnearnearCS≠DS、DS=SSCS≦64Ki、DS+SS≦64Ki
ミディアムモデルnearfarCS≠DS、DS≠SSCS≦64Ki、DS≦1Mi、SS≦64Ki
コンパクトモデルfarnearCS≠DS、DS=SSCS≦1Mi、DS+SS≦64Ki
ラージモデルfarfarCS≠DS、DS≠SSCS≦1Mi、DS≦1Mi、SS≦64Ki
ヒュージモデルhugehuge

仕様

  • タイニーモデル

    最もコンパクトで、コードとデータを合わせて1セグメント(64Kiバイト)以内とする。

    8ビットプログラミングとの互換性のために用意されている。

    タイニーモデルのみCOMファイルとなり、それ以外は全てEXEファイルとなる。

  • スモールモデル

    コードとデータが各nearポインター(64Kiバイト=1セグメント)で表わせる範囲でプログラミングする。

    EXEファイルを作成するメモリーモデルとしては最軽量。

  • ミディアムモデル/コンパクトモデル

    コードまたはデータの片方をfarポインター(20ビットのポインター)、もう片方をnearポインターで表わせる範囲でプログラミングする。

    farポインターを使うメモリーモデルとしては最軽量。

  • ラージモデル/ヒュージモデル

    コード・データ共にfarポインターで表わせる範囲でプログラミングする。大型のプログラムを開発するためのメモリーモデルである。

    ラージモデルとヒュージモデルの違いは、一つの変数の最大サイズが、64Kiバイト(ラージ)か1Miバイト(ヒュージ)かの違いである

関連する用語
x86
リアルモード

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club