版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、端模和小模式起源關(guān)于大端小名詞的由來(lái)一個(gè)有的故事自于JonathanSwift的格利佛游記》Lilliput和這兩個(gè)強(qiáng)國(guó)在去的36個(gè)月中一直苦戰(zhàn)。戰(zhàn)爭(zhēng)的原因:大家都知道,吃雞蛋的時(shí)候,原始的方法是打破蛋較大的一端以時(shí)皇的父于小時(shí)侯吃雞蛋,按這種方法手指弄破了因他的親,就下令令所有的子民吃雞蛋的時(shí)候必須先打破雞蛋較小的一端,違令者重罰。然后老百姓對(duì)此法令極為感,期間發(fā)生了多次叛亂中個(gè)帝因此送,另一個(gè)丟了王位產(chǎn)生叛亂的原因就是另一個(gè)國(guó)家Blefuscu的王臣動(dòng)起來(lái)的,亂平息后,就逃到這個(gè)帝國(guó)避難。據(jù)估計(jì),先后幾次有11000余情愿死也不肯去打破雞蛋較小的端吃雞蛋個(gè)實(shí)刺當(dāng)時(shí)英國(guó)和法之間持續(xù)的沖突DannyCohen一網(wǎng)協(xié)議的開(kāi)者,第一次使用兩個(gè)術(shù)語(yǔ)指代字節(jié)順序,后來(lái)就被大家廣泛接受。二、么是端和端Little-Endian的義下1)Little-Endian就低位字節(jié)排放在內(nèi)存的地址端位節(jié)排放在內(nèi)存的高地端。2)Big-Endian就是高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地端。舉一個(gè)例子比如數(shù)字0x12345678在內(nèi)中的表示形式為:1)大端式:1/11
低地址----------------->高址0x12|0x34|0x56|0x782)小端式:低地址------------------>高址0x78|0x56|0x34|0x12可見(jiàn),大端式和字符串的存儲(chǔ)模式類似。3)下面是兩具例:16bit寬數(shù)在Little-endian模(及Big-endian模式)CPU內(nèi)存中的存放方式(假設(shè)從地0x4000開(kāi)始存放)為:小大端模式
32bit0x12345678CPU址開(kāi)始存放:小大端模式
2/11
4)大端小端沒(méi)有誰(shuí)優(yōu)誰(shuí)劣,各自優(yōu)勢(shì)便是對(duì)方劣勢(shì):小端模式:強(qiáng)轉(zhuǎn)換數(shù)不需要調(diào)整字節(jié)內(nèi)容124字的存儲(chǔ)方式一樣。大端模式:符位的判固定為第一個(gè)字節(jié),容易判斷正負(fù)。三、組在端小情況的存儲(chǔ):以u(píng)nsignedint=0x12345678為,分別看看在兩種字序下其存儲(chǔ)況,我們可以用unsignedcharbuf[4]來(lái)示value:Big-Endian:低地存放高位,如下:高地址---------------buf[3]--低buf[2]buf[1]buf[0]--高---------------低地址Little-Endian:低址放低位,如下:高地址---------------buf[3]--高buf[2]buf[1]buf[0]--低--------------低地址3/11
四、什么有大端模之分呢?這是因?yàn)樵谒銠C(jī)系統(tǒng)中,我們是以字節(jié)為單位的,每個(gè)地址單元都對(duì)應(yīng)著個(gè)字節(jié),一個(gè)字節(jié)為8bit。是在語(yǔ)中了8bit的char之,有16bit的short型32bit的型要看具體的編譯器),另外對(duì)于位數(shù)大于8位處器,例如位或者32位處理器由寄器度于個(gè)字節(jié)么必然存在著一個(gè)如果將多個(gè)字節(jié)安排的題因此就導(dǎo)致了大端存儲(chǔ)模式和小端存儲(chǔ)模式例如一個(gè)16bit的short型,內(nèi)中地為,的值為0x1122,那么0x11為字0x22為字節(jié)。對(duì)于大端模式,將0x11放低地址中,0x0010中0x22放高址中,即0x0011中小端模式剛相反我常的X86結(jié)是小端模式而C51則大端模式。很的,DSP都小模。有些ARM處器可由硬件來(lái)選是大端模式還是小端模式。五、何判機(jī)器字節(jié)可以編寫(xiě)一小的測(cè)試程序來(lái)判斷機(jī)器的字節(jié)序:viewplaincopy1.BOOLIsBigEndian()2.{3.inta=0x1234;4.charb=*(*)&a;
通過(guò)將強(qiáng)制類型轉(zhuǎn)換成單字節(jié)過(guò)判斷起始存儲(chǔ)位置。即等于取等于a的低地址部分5.ifb0x12)6.{7.returnTRUE;8.}9.return4/11
10.style="font-family:Arial,Verdana,sans-serif;white-space:normal;background-color:rgb(255,255,255);>聯(lián)合體union的放順序是所有成員都從低地址開(kāi)始存放,利用該性可以輕松地獲得了CPU對(duì)存采用Little-endian還是Big-endian模讀寫(xiě):viewplaincopy1.BOOLIsBigEndian()2.{3.union4.{5.inta;6.charb;7.}num;8.num.a0x1234;9.ifnum.b0x1210.{11.returnTRUE;12.}13.returnFALSE;14.style="font-family:Arial,Verdana,sans-serif;white-space:normal;background-color:rgb(255,255,255);>六、見(jiàn)的節(jié)序一般操作系都是小端,而通訊協(xié)議是大端的。4.1常見(jiàn)CPU的字節(jié)序BigEndian:、IBMSunLittleEndian:、DECARM既以工作在大端模式,也可以工作在小端模式。4.2常見(jiàn)文件的字節(jié)序AdobePS–BigEndian–LittleEndian5/11
DXF(AutoCAD)–VariableGIF–LittleEndianJPEG–EndianMacPaint–BigEndian–LittleEndian另外,和有的網(wǎng)絡(luò)通訊協(xié)議都是使用的編。七、何進(jìn)轉(zhuǎn)換對(duì)于字?jǐn)?shù)據(jù)(位)[cpp]viewplaincopy1.#defineBigtoLittle16(A)((((uint16)(A)&>>8)|\2.(((uint16)(A)&<<8))對(duì)于雙字?jǐn)?shù)32位:[cpp]viewplaincopy1.#defineBigtoLittle32(A)((((uint32)(A)&0xff000000)24)\2.(((uint32)(A)&>>8)|\3.(((uint32)(A)&<<8)|\4.(((uint32)(A)&<<24))八、軟件角度解端式從軟件的角上端式的處理器進(jìn)行數(shù)據(jù)傳遞時(shí)必須要考慮端模式的同。如進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳遞時(shí),必須要考慮端模式的轉(zhuǎn)換。在Socket接編程中,以下幾個(gè)函數(shù)用于大小端字節(jié)序的轉(zhuǎn)換。[cpp]viewplaincopy1.#define//16位數(shù)據(jù)類型網(wǎng)絡(luò)字節(jié)順序到主機(jī)字節(jié)順序的轉(zhuǎn)換2.#define//16位數(shù)據(jù)類型主機(jī)字節(jié)順序到網(wǎng)絡(luò)字節(jié)順序的轉(zhuǎn)換3.#define//32位數(shù)據(jù)類型網(wǎng)絡(luò)字節(jié)順序到主機(jī)字節(jié)順序的轉(zhuǎn)換6/11
4.#define//32位數(shù)據(jù)類型主機(jī)字節(jié)順序到網(wǎng)絡(luò)字節(jié)順序的轉(zhuǎn)換其中互聯(lián)網(wǎng)使用的網(wǎng)絡(luò)字節(jié)順序采用大端模式進(jìn)行編址,而主機(jī)字節(jié)順序根據(jù)處理器的不同而不同,如PowerPC處器使用大端模式,而Pentuim處器使用小端模式。大端模式處理器的字節(jié)序到網(wǎng)絡(luò)字節(jié)序不需要轉(zhuǎn)換,此時(shí)ntohs(n)=n,ntohl=;而小端模式處理器的字節(jié)序到網(wǎng)絡(luò)字節(jié)必須要進(jìn)行轉(zhuǎn)換=ntohl=。與__swab32函定義如下所示。[cpp]viewplaincopy1.#define___swab16(x)2.{3.__u16=(x);4.((__u16)(5.(((__u16)(__x)&(__u16)0x00ffU)<<8)|6.(((__u16)(__x)&(__u16)0xff00U)>>8)));7.}8.9.10.___swab32(x)11.12.__u32=(x);13.((__u32)(14.(((__u32)(__x)&(__u32)0x000000ffUL)24)15.(((__u32)(__x)&(__u32)0x0000ff00UL)8)16.(((__u32)(__x)&(__u32)0x00ff0000UL)8)17.(((__u32)(__x)&(__u32)0xff000000UL)24)18.PowerPC處器提供了lwbrxlhbrx,,sthbrx四條指令用于處理字節(jié)序的轉(zhuǎn)換以優(yōu)化_swab16和__swap32這類函數(shù)。此外PowerPC處器中的rlwimi指也以用來(lái)實(shí)現(xiàn)_swab16和__swap32這類函數(shù)。在對(duì)普通文進(jìn)行處理也需要考慮端模式問(wèn)題。在大端模式的處理器下對(duì)文的3216位讀寫(xiě)操作所得到的果與小端模式的處理器不同。單純軟件的角度理解上遠(yuǎn)遠(yuǎn)不能真正理解大小端模式的區(qū)別。7/11
事實(shí)上,真的理解大小端模式的區(qū)別須從統(tǒng)的角度從指令集,寄存器數(shù)據(jù)總線上深入理解,大小端模式的區(qū)別。九、系統(tǒng)角度解端式先補(bǔ)充兩個(gè)鍵詞MSB和LSBSignificantBit-------最有位LSB:LeastSignificant-------最有位處理器在硬上由于端模式問(wèn)題在設(shè)計(jì)中有所不同統(tǒng)的角度上看端式問(wèn)題對(duì)軟件和硬件的設(shè)計(jì)帶來(lái)了不同的影響一處理器系統(tǒng)中小端模式同時(shí)存在時(shí)須對(duì)些同端模式訪問(wèn)進(jìn)行特殊的處。PowerPC處器主導(dǎo)網(wǎng)絡(luò)市場(chǎng)說(shuō)大數(shù)的通信備都使用PowerPC處器行協(xié)議處理和其他控信息的處理,這也可能也是在網(wǎng)絡(luò)上絕大多數(shù)協(xié)議都采用大端編址方式的原因在有關(guān)網(wǎng)絡(luò)協(xié)議的軟設(shè)計(jì)中用端方式的理器需要在軟件中處端模式的轉(zhuǎn)變。而Pentium主個(gè)機(jī)場(chǎng),因此多數(shù)用于個(gè)人機(jī)的外設(shè)都采用小端模一在絡(luò)設(shè)備中用的PCI總等備,這也要求在件設(shè)計(jì)中注意端模式的轉(zhuǎn)換。本文提到的端外設(shè)是指這種外設(shè)中的寄存器以小端方式進(jìn)行存儲(chǔ)如PCI設(shè)備配空間NORFLASH中的寄存器等對(duì)有設(shè)備,如DDR顆,有小方式存儲(chǔ)的寄存器,因此從邏輯上講并不需要對(duì)模式進(jìn)行轉(zhuǎn)換在計(jì)中只要雙數(shù)據(jù)總線進(jìn)行一8/11
一對(duì)應(yīng)的互,而不需要進(jìn)行數(shù)據(jù)總線的轉(zhuǎn)換。如果從實(shí)際用的角度說(shuō),采用小端模式的處理器需要在軟件中處理端模式轉(zhuǎn)換,因?yàn)椴捎眯《四J降奶幚砥髟谂c小端外設(shè)互連時(shí),不需要任何換采大模式的處理器需要在硬件設(shè)計(jì)時(shí)處理端模式的轉(zhuǎn)換大模處器要在寄存器,指令集據(jù)線及數(shù)據(jù)總線與小端外的連接等等多個(gè)方面進(jìn)行處理解決與小端外連接時(shí)的端模式轉(zhuǎn)問(wèn)題寄存器和數(shù)據(jù)總線的位序定義上于大小端模式的處理器所不同。一個(gè)采用大模式的32位處理器于E500內(nèi)的MPC8541將其寄存器最高位msb(mostsignificantbit定義為0,最低位lsb(significantbit定為;而小端模的32位理,將其寄存器的最位定義為31低位地址定義為。與此向?qū)?yīng),采用大端模式的位理數(shù)據(jù)總線的最高位為0,高位為;采用小端模式的32位理的數(shù)據(jù)總線的最高位為31,最低位為。大小端模式理器外部總線的位序也遵循著同樣的規(guī)律,根據(jù)所采用的數(shù)據(jù)線是32位16位位大端處理器外部總線的序有所不同。端模式下位據(jù)總的msb是第0位是據(jù)總線的第0~7的段而lsb是位LSB是第24~31字段小端模式下32位線的msb是31位MSB是數(shù)據(jù)總線的第31~24位,lsb是第0位LSB是字大端模式下16位據(jù)線msb是第位,MSB是據(jù)線的第0~7的字;而lsb是15位,LSB是第8~15字。端模式下16位線msb是位MSB是9/11
據(jù)總線的第15~7位,是0位是7~0字。大端模式下位數(shù)據(jù)總線msb是0位是數(shù)總的0~7的段lsb是第7位LSB是第0~7字模下8位線msb是第7位是據(jù)線的第7~0位lsb是0位,是7~0字。由上分析,們可以得知對(duì)于8位,16位位度的數(shù)據(jù)總線大模式時(shí)數(shù)據(jù)總線的和MSB的置都不會(huì)發(fā)生變化,而采用小端式時(shí)數(shù)據(jù)總線的lsb和LSB位也會(huì)生化。為此大模的理對(duì)8位位位內(nèi)存訪包括外設(shè)的訪)一般都包含第字,即MSB小模的處理器對(duì)位位32位內(nèi)訪都含第7~0位端式的第7~0字段,即LSB由于大小端處理器的數(shù)據(jù)總線其8位,位位寬度的數(shù)據(jù)線的定義不同此要?jiǎng)e行論系統(tǒng)級(jí)別上如何處理端模式換在一個(gè)大端處理器系統(tǒng)中需處大端處理器對(duì)小端外設(shè)的訪。十、際中例子雖然很多時(shí),字節(jié)序的工作已由編譯器完成了,但是在一些小的細(xì)節(jié)上仍需要去仔細(xì)揣摩考慮其在太通訊通訊、軟件植性方面。這里,舉一個(gè)
通的子。在中數(shù)據(jù)需要組織數(shù)據(jù)報(bào)文,該報(bào)文中的數(shù)據(jù)都是大端模式,即地存高位,高地址存低位。假設(shè)有一位緩沖區(qū)m_RegMW[256]因?yàn)槭窃趚86平上所內(nèi)中的數(shù)據(jù)為小端模式:m_RegMW[0].low、m_Re
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026陜西長(zhǎng)嶺紡織機(jī)電科技有限公司招聘(13人)筆試備考題庫(kù)及答案解析
- 2026年征兵工作心理考試題庫(kù)及答案1套
- 2026福建廈門(mén)市工人文化宮合同制職工招聘1人筆試參考題庫(kù)及答案解析
- 2026年浙江省衢州市單招職業(yè)傾向性考試題庫(kù)及答案1套
- 2026年湖北職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試模擬測(cè)試卷及答案1套
- 2026河南鄭州大學(xué)物理學(xué)院人工微結(jié)構(gòu)課題組招聘科研助理1人筆試備考試題及答案解析
- 2026年桂林師范高等專科學(xué)校單招職業(yè)適應(yīng)性考試題庫(kù)附答案
- 2026年河南物流職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)附答案
- 2026福建泉州德化閩投抽水蓄能有限公司招聘筆試參考題庫(kù)及答案解析
- 2025廣西南寧市良慶區(qū)總工會(huì)招聘工作人員1人筆試備考題庫(kù)及答案解析
- 江蘇省南通市2025屆高三三模 地理試題(含答案)
- 普外科科室護(hù)理年終總結(jié)
- 溫室氣體 產(chǎn)品碳足跡量化方法與要求 房間空調(diào)器 編制說(shuō)明
- 山東省菏澤市菏澤經(jīng)開(kāi)區(qū)2024-2025學(xué)年八年級(jí)(上)期末物理試卷(含解析)
- 改非申請(qǐng)書(shū)范文
- 2025年度光伏發(fā)電站智能監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)施合同
- 《老年康復(fù)照護(hù)》高職全套教學(xué)課件
- office辦公軟件應(yīng)用教學(xué)教案150
- 高級(jí)會(huì)計(jì)師評(píng)審專業(yè)技術(shù)工作業(yè)績(jī)報(bào)告
- 土地承包合同(2篇)
- 零首付買(mǎi)房合同范本
評(píng)論
0/150
提交評(píng)論