造冰箱的大熊貓@cnblogs 2021/4/10
1、大端模式 vs 小端模式
多字節數據存儲時,可以先高字節再低字節,也可以是先低字節再高字節。以32位無符號整數0x12345678為例,該數值在存儲器中占用四個字節的存儲空間。如果偏移址addr=0x12,addr+1=0x34,addr+2=0x56,addr+3=0x78,為大端模式(高字節寫入存儲器低地址位)。如果偏移址addr=0x78,addr+1=0x56,addr+2=0x34,addr+3=0x12,為小端模式(高字節寫入存儲器高地址位)。
2、不同計算機系統的大小端模式
之前編寫過一個小軟件用於查詢計算機的大小端模式,后發現完全沒有必要。
1)大小端模式由處理器決定。可通過查閱處理器技術資料獲知處理器的大小端模式,無需使用軟件獲取。
2)Oracle數據庫提供功能可查詢多種計算機系統的大小端模式。根據查詢結果(網址,截圖),個人計算機常用的x86和x86_64處理器(無論是運行Linux、Windows還是Mac操作系統)均為小端模式。
3)早期蘋果計算機使用過的PowerPC處理器為大端模式。
4)TI公司C6678 DSP具有一個名為LENDIAN的管腳。DSP啟動時該管腳上的電平高低決定了DSP使用大端模式還是小端模式。
3、檢查計算機系統大小端模式的編程方法
檢查計算機系統大小端模式的C代碼示例如下:
WORD dummy = 0x1234;
BYTE * pt = ( BYTE * )( &dummy );
if ( (*pt) == 0x12 )
printf ( "當前計算機系統為大端模式\n" );
else
printf ( "當前計算機系統為小端模式\n" );
4、IA-32、IA-64、x86、x86_64和AMD64的區別
為便於理解2中Oracle數據庫查詢結果,對不同處理器架構標識予以說明:
x86:Intel公司研制了16位8086處理器后,又研制了更高性能的16位處理器80286和32位處理器80386。這些處理器具備向后兼容特性,也就是說新型號處理器支持舊型號處理器的指令集。此外,AMD等公司也生產80x86處理器。這些80x86處理器被統稱為x86處理器,對應的指令集也被稱為x86指令集。現在,由於16位x86處理器已退出商用市場,x86也特指32位x86微處理器。
IA-32:為了與其它生廠商生產的x86處理器區分開來,Intel從80486開始使用IA-32標識自家的32位處理器。
IA-64:Intel推出過名為Itanium(安騰)的64位處理器。該處理器使用特殊指令集,不兼容x86指令集,硬件和軟件都需要重新開發,初期應用於服務器,后來在x86_64處理器的沖擊下成為了“歷史”。
x86_64、AMD64:AMD研制的64位處理器支持x86指令集,具有更好的兼容性,獲得了用戶的青睞。最初,AMD64特指AMD的64位處理器。后來,隨着Intel也開始生產支持x86指令集的64位處理器,使用x86_64統稱AMD和Intel的64位處理器。
參考資料