LP64
読み:エルピーろくじゅうよん
外語:LP64: long,pointer 64bit
データ型モデルのうち、三種類ある主要な64ビット環境のうちの一つ。
概要
32ビットのILP32に対し、ポインターとlongを64ビット化したもの。LP64は、longとポインターが64ビット、という意味である。
64ビット版のLinux、FreeBSD/OpenBSD等BSD、その他一般にUNIXと解釈されているOS全般で採用されている。
特徴
long
longを、ポインター長と一致させたデータ型モデルである。
もう一つの実装方法LLP64との違いは、longが64ビットであることである。ソースリストに相互の移植性が必要な場合は、処理の方法等を含めた検討が必要である。
intとlongの長さが違うため、漠然と同じであることを想定したようなプログラムで問題が生じる恐れがある。
UNIX
ポインターをint型に代入するようなプログラムは移植できないが、long型に代入するようなプログラムはデータ長が同じため問題が顕著化せず、そのまま移植することができる。
UNIXでは伝統的にポインターをlong型変数に入れて使う傾向にある。例えばコールバック関数の引数でunsigned longにポインターが入っており、これを(void *)などでキャストして使う、といったこともよくある。そのため、このデータ型モデルが採用されたものと思われる。
再検索