<<戻る
2004年10月19日
データモデルとは、オペレーティング環境でデータのサイズをどのようにするか決めることです。64bitマシンの業界標準はLP64と呼ばれます。Lはlong、Pはポインタを意味します。LP64の場合、long型とポインタが64bitになります。(Iは当然int型のことです。)
| データ型 | LP64 | ILP64 | LLP64 | ILP32 | LP32 |
| char | 8 | 8 | 8 | 8 | 8 |
| short | 16 | 16 | 16 | 16 | 16 |
| _int32 | 32 | ||||
| int | 32 | 64 | 32 | 32 | 16 |
| long | 64 | 64 | 32 | 32 | 32 |
| long long | 64 | ||||
| pointer | 64 | 64 | 64 | 32 | 32 |
現在、一般家庭で利用されているパソコンは32bitCPUです。そのためデータモデルとしてILP32を利用しています。16bitCPUから32bitCPUに移行する際には、LP32からILP32に変化しました。このとき、C言語などはデータ型がマシン依存するため多くのプログラムで問題が発生しました。LP32とILP32のint型を確認してみてください。16bitから32bitに変化しています。この時代、将来はint型が64bitになるから、long型で実装しなさいという定説がありましたが、現在UNIXの業界標準としてLP64が採用されてしまいましたので、この定説は覆されました。Microsoft社はLLP64(=P64)を採用するようです。
参考資料
64-Bit Programming Models: Why LP64?
Getting Ready for 64-bit Windows