小端模式和大端模式 大端序和小端序

2021-10-11 15:07:55 字數 1550 閱讀 1643

例如,將12345678h寫入1000h開始的記憶體中,以大端序小端序模式存放結果如下

一般來說,x86系列cpu都是little-endian位元組序,powerpc通常是big-endian位元組序。

因為網路協議也都是採用big-endian方式傳輸資料的,所以有時也把big-endian方式稱為網路位元組序

下面通過乙個簡單的例子繼續理解小端序

#include "windows.h"

byte b = 0x12;

word w = 0x1234;

dword dw = 0x12345678;

char str = "abcde";

int main(int argc, char* ar**)

通過visual studio除錯一下,轉到反彙編檢視反彙編**

可以看到全域性變數bwdwstr的位址分別為06aa000h06aa004h06aa008h06aa00ch。我們在記憶體視窗檢視相應的位址,可以看到對應的資料,上面不同顏色的方框對應不同變數。

dw這個變數來說,他的位址是06aa008h,可以看到他的資料是0x780x560x340x12,注意小端序是位址高位儲存資料的高位,位址低位儲存資料的低位

而字串「abcde」被儲存在乙個字元(char)陣列str中,字元陣列在記憶體中是連續的,此時向字元陣列存放資料,無論是採用大端序還是小端序,儲存順序都相同。

還有另個知識點,就是注意到反彙編**中的ptr了嗎,逆向分析的時候是不是經常看見這個符號,知道他是幹什麼的嗎?

ptr運算子可以重寫運算元預設的大小型別,ptr的前面會有型別的宣告,比如byte ptr [b(06aa000h)],他的意思從這個位址取乙個byte大小的資料。比如byte ptr [dw(06aa008h)]得到的就是0x78word ptr [dw(06aa008h)]得到的就是0x5678,以此類推。

小端模式和大端模式 大端模式和小端模式

0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...

大端和小端模式

大端格式 在這種格式中,字資料的高位元組儲存在低位址中,而字資料的低位元組則存放在高位址中,如圖2.1所示 小端格式 與大端儲存格式相反,在小端儲存格式中,低位址中存放的是字資料的低位元組,高位址存放的是字資料的高位元組。如圖2.2所示 請寫乙個c函式,若處理器是big endian的,則返回0 若...

大端模式和小端模式

大端模式和小端模式 在c語言中除了8位的char型之外,還有16 位的short型,32 位的long型 要看具體的編譯器 對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然 存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。大端模...