通信用語の基礎知識 日本文化チャンネル桜二千人委員会 戻る

通常PC用 / 人気 更新 今日 カテ
技術・工学 > 半導体 > 集積回路 > MPU > 動作・機能・技術 > x86系
nearポインター
辞書:電算用語の基礎知識 プログラミング用語編 (PTPROGY)
読み:ニアーポインター
外語:near pointer
品詞:名詞

x86系プロセッサーの16ビット環境でのプログラミングで使われるポインターの一つ。

目次
概要

セグメントを使用せず、オフセットのみ16ビットの数値でアドレスを表現する。同一セグメント内でのメモリーアクセスの場合に用いられる。

即値代入やキャストも可能だが、概ねトラブルの元である。

実装により様々だが、内部的には16ビット変数のように振る舞うことが多かった。この場合、sizeofすると2という結果が得られるはずである。

特徴
使用例

MS-DOSWin16Cでは、ポインター変数の定義にあたり、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;

この場合の動作は実装依存であり、結果については未定義である。オフセットのみを返す場合と、セグメント拡張をする場合とがある。

リンク
用語の所属
x86
IA-16
NP
関連する用語
farポインター
hugeポインター

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic