32位與64位系統(tǒng)數(shù)據(jù)模型

32位環(huán)境涉及"ILP32"數(shù)據(jù)模型,是因?yàn)镃數(shù)據(jù)類(lèi)型為32位的int、long、指針。

而64位環(huán)境使用不同的數(shù)據(jù)模型,此時(shí)的long和指針已為64位,故稱(chēng)作"LP64"數(shù)據(jù)模型。

現(xiàn)今所有64位的類(lèi)Unix平臺(tái)均使用LP64數(shù)據(jù)模型,而64位Windows使用LLP64數(shù)據(jù)模型,除了指針是64位,其他基本類(lèi)型都沒(méi)有變。



Data Type???? ILP32????? ILP64?LP64????? LLP64

char???????? ??? ?8???????????? 8????????????8???????? ?? 8

short????????????16?????????? 16?16??????????16

int??????? ??????? 32?????????? 64?32?????? ?? 32

long???????????? 32?????????? 64????????64????????? 32

long long???? ?64???????????64?64????????? 64

pointer????? ?? 32?????????? 64?64?????? ?? 64

在網(wǎng)上查資料,還看到一個(gè)LP32(long point 64)模型,就是int是16位的。

這個(gè)從來(lái)沒(méi)有用到過(guò)。

絕大部分64位的Unix,linux都是使用的LP64模型;

64位的Windows使用的是LLP64(long long and point 64)模型。

另外,在網(wǎng)上看到一個(gè)資料:

float??? 都是4字節(jié);

double??? 都是8字節(jié);(C中直接寫(xiě)小數(shù),默認(rèn)是double型)




TYPE?????????????? LP32? ILP32? LP64? ILP64 ?LLP64


CHAR??????????????? 8??????? ?8????????? 8?????????8???????? 8

SHORT???????????? 16?????? 16????????16?????? 16?????? 16

INT??????????????????16???????32????????32??????? 64????? 32

LONG?????????????? 32???????32??????? 64???????64?????? 32

LONG LONG???? 64???????64????????64???????64???????64

POINTER????????? 32???????32??????? 64?????? 64???????64?

在這張表中,LP64,ILP64,LLP64是64位平臺(tái)上的字長(zhǎng)模型,ILP32和LP32是32位平臺(tái)上的字長(zhǎng)模型。

LP64意思是long和pointer是64位,ILP64指int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容