- 77 名前:デフォルトの名無しさん mailto:sage [2012/12/15(土) 09:09:59.58 ]
- farなんていうのは16bit x86(16bit プロテクトモードを含む)の
化石だよね。だから>>74がリアルモードに限定しているのは間違い。 16bit x86の設計は8bitCPU8080のコードをポーティングしやすくする ためにアドレス空間も8080と同じ64KBを基本とした。 この範囲のプログラムはポインタも16bitで良かった。 だが時代が進みコードサイズが爆発的に増えた結果、オフセット だけでは不足してきたので、セグメントとペアで扱うことにした。 だがC言語的にはポインタはポインタでしかないので、ポインタが アドレス可能な範囲は実装依存だった。 でもオフセットのみのポインタとセグメントとペアのポインタは区別して 扱わないと開発上問題になる。そこで予約語farを定義して、farがつく ポインタはセグメントとペア、それ以外はオフセットのみと定義すること にした。 一般的にはfarのつくポインタだけをセグメントとペアのもの、つかない ポインタはオフセットのみという認識だが、あえて両者を区別しやすく するという意味でオフセットのみのポインタを「nearポインタ」と呼ぶ場合 もある。でも今となっては用済みのテクノロジでどうでもいいヨタ話。
|

|