上節計算機組成原理課講到了大端編址和小端編址。
首先,大端編址(big-endian)和小端編址(little-endian)是兩種位元組儲存機制,兩種位元組序。標準的big-endian和little-endian的定義如下:
a) little-endian就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。
b) big-endian就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。
一.什麼是高低位址端
----------------------- 最高記憶體位址 0xffffffff
棧底
棧
棧頂
-----------------------
null (空洞)
-----------------------
堆
-----------------------
未初始 化的資料
----------------------- 統稱資料段
初始化的資料
-----------------------
正 文段(**段)
----------------------- 最低記憶體位址 0x00000000
由圖可以看出,在記憶體分布中,棧是向下增長的,而堆是向上增長的。
----------
buf[3]
buf[2]
buf[1]
buf[0]
----------
棧頂 (低位址)
二.什麼是高低位元組。
拿0x12345678來說,從高位到低位的位元組依次是0x12、0x34、0x56和0x78。
big-endian: 低位址存放高位,如下圖:
棧底 (高位址)
---------------
buf[3] (0x78) -- 低位
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) -- 高位
---------------
棧頂 (低位址)
little-endian: 低位址存放低位,如下圖:
棧底 (高位址)
---------------
buf[3] (0x12) -- 高位
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) -- 低位
--------------
棧 頂 (低位址)
三.編寫程式測試cpu是大端編址還是小端編址。
1 #include2 #include3view code4using
namespace
std;
5int
main()6c;
12 c.a=1;13
if(c.b==1)14
17else
1821
return0;
22 }
方法二:通過指標型別強制轉換並對整型資料首位元組賦值,判斷該賦值賦給了高位還是低位。
1 #include2view code3int
main()411
else
1215
return0;
16 }
經過測試,我的電腦是小端編址,這與上課所學的x86是小端編址,mips是大端編址相符。
計算機組成原理二
1.指令的格式 每條指令等長,均為2個位元組 第乙個位元組的高四位是操作碼,低四位作為表示暫存器號 第二個位元組是儲存單元位址 2.計算機啟動過程 1 計算機啟動後,從bios晶元中取出指令,進行執行,這段程式就是在實模式在進行的。2 設定cpu中pe 1,作業系統進入保護模式,如果任務需要會進入虛...
計算機組成原理二
計算機的基本組成 一.馮諾依曼計算機的特點 儲存程式通用方案 edvac 1.特點1 五大部分組成 運算器 控制器 儲存器 輸入裝置 輸出裝置 2指令和資料以同等地位存於儲存器 可按定址訪問 3.指令和資料都用二進位制表示 4.指令由操作碼和位址碼組成。操作碼指指令做什麼操作,位址碼指運算元所在的位...
計算機組成原理筆記(二)
通過下面的思維導圖來依次分享 資料的表示和運算 裡面重要知識點的筆記。1.真值 需要用正 負號來分別表示正數 正號可以省略 負數的數稱為真值,真值是機器數所代表的實際值。2.機器數 將資料的符號數位化,即用 0 表示 正 用 1 表示 負 3.bcd碼 二進位制的十進位制數 binary coded...