ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
x86シリーズの16ビットモード(リアルモード)に存在する、メモリーの使い方に応じたプログラミングモデル。
x86は、従来の8ビットプログラミングとの互換性や効率などを配慮し、セグメント:オフセットという特殊なアドレッシング方式が採用された。
このため、他のプロセッサーでは必要ない様々な技術が必要となり、C/C++では、メモリーの使い方に応じたプログラミングモデルも用意された。これをメモリーモデルという。
規模順に、次のようなモデルに分けられる。どれに対応するかはコンパイラー次第である。
モデル | ポインター | セグメントレジスター | 最大サイズ | |
---|---|---|---|---|
コード | データ | |||
タイニーモデル | near | CS=DS=SS=ES | CS+DS+SS≦64Ki | |
スモールモデル | near | near | CS≠DS、DS=SS | CS≦64Ki、DS+SS≦64Ki |
ミディアムモデル | near | far | CS≠DS、DS≠SS | CS≦64Ki、DS≦1Mi、SS≦64Ki |
コンパクトモデル | far | near | CS≠DS、DS=SS | CS≦1Mi、DS+SS≦64Ki |
ラージモデル | far | far | CS≠DS、DS≠SS | CS≦1Mi、DS≦1Mi、SS≦64Ki |
ヒュージモデル | huge | huge |
最もコンパクトで、コードとデータを合わせて1セグメント(64Kiバイト)以内とする。
8ビットプログラミングとの互換性のために用意されている。
コードとデータが各nearポインター(64Kiバイト=1セグメント)で表わせる範囲でプログラミングする。
EXEファイルを作成するメモリーモデルとしては最軽量。
コードまたはデータの片方をfarポインター(20ビットのポインター)、もう片方をnearポインターで表わせる範囲でプログラミングする。
farポインターを使うメモリーモデルとしては最軽量。
コード・データ共にfarポインターで表わせる範囲でプログラミングする。大型のプログラムを開発するためのメモリーモデルである。
ラージモデルとヒュージモデルの違いは、一つの変数の最大サイズが、64Kiバイト(ラージ)か1Miバイト(ヒュージ)かの違いである
コメントなどを投稿するフォームは、日本語対応時のみ表示されます