nearポインター |
辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY) |
読み:ニアーポインター |
外語:near pointer |
品詞:名詞 |
x86系プロセッサーの16ビット環境でのプログラミングで使われるポインターの一つ。
|
概要 |
セグメントを使用せず、オフセットのみ16ビットの数値でアドレスを表現する。同一セグメント内でのメモリーアクセスの場合に用いられる。
即値代入やキャストも可能だが、概ねトラブルの元である。
実装により様々だが、内部的には16ビット変数のように振る舞うことが多かった。この場合、sizeofすると2という結果が得られるはずである。
特徴 |
使用例 |
MS-DOSやWin16のCでは、ポインター変数の定義にあたり、near/far/hugeという3つの予約語が用いられた。
これらはCの標準仕様には存在しないものであったが、これなくしてプログラミングが出来なかったため、やむを得ず利用された。
unsigned char near *np;
unsigned char far *fp;
unsigned char huge *hp;
nearポインターは、このうちnearを指定したときに使われるポインターである。
なお、nearやfarを省略した場合、Cコンパイラーが自動的に判断するので必ずしも指定する必要は無いが、ポインターの種類を決め打ちしたい場合に必要となる。
代入 |
nearポインターへのキャストが可能だが、次の例は極めて危険であり動作が保証されない。
unsigned char near *np;
unsigned char far *fp;
np = (unsigned char near*)fp;
farポインターへの即値代入も可能だが、実装依存である。以下は一例。
unsigned char near *np;
np = (unsigned char near *)0x0123;
この場合、オフセット 0123 というアドレスに対するnearポインターとなる。このポインターを使えば、このアドレスに対して何かを書き込むことができる。
*np = 0x00;
整数型変数へのキャスト |
nearポインターを整数型変数にキャストすることもできる。
unsigned char near *np;
unsigned long l;
l = (unsigned long)np;
この場合の動作は実装依存であり、結果については未定義である。オフセットのみを返す場合と、セグメント拡張をする場合とがある。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |