64位数据模式

在看到一个网页介绍HotSpot JVM的Compressed oop(压缩的对象引用)的设置时,看到LP64和ILP32系统的术语,在wikipedia查了下,发现正常了点知识,记录一下。
首先,L是Long integer的缩写,P是Pointer的缩写,I是integer的缩写,LL是Long Long的缩写。
其次,在64位系统中,Unix/Linux等是LP64数据模式,而Windows是LLP64模式.

Data model short (integer) int long (integer) long long pointers/
size_t
Sample operating systems
LLP64/
IL32P64
16 32 32 64 64 Microsoft Windows (x86-64 and IA-64)
LP64/
I32LP64
16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS
ILP64 16 64 64 64 64 HAL Computer Systems port of Solaris to SPARC64
SILP64 64 64 64 64 64 “Classic” UNICOS (as opposed to UNICOS/mp, etc.)

LP64系统中,long和pointer是64字节,而int是32字节。
当然,在任何的32或64位系统上,long long 类型都是64字节。
多数的32位系统多数都是ILP32模式的(我没细查了),int, long, pointer都是32字节的。

 
参考资料:
http://en.wikipedia.org/wiki/64-bit_computing
http://en.wikipedia.org/wiki/32-bit
https://wikis.oracle.com/display/HotSpotInternals/CompressedOops

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注