一般情況下字為32位(4位元組)、半字為16位(2位元組)、位元組為8位(1位元組)。
大多數計算機使用 位元組(8位的資料塊)作為最小可定址的儲存器單位 ,而不是訪問儲存器中單獨的位。儲存器的每乙個位元組都由唯一的數字標識,稱為該位元組的位址,所有可能位址的集合稱為儲存器空間。
舉例來說,arm處理器工作狀態有如下兩種:
arm狀態:執行字對齊的32位arm指令。
thumb狀態:執行半字對齊的16位thumb指令。
字對齊、半字對齊、位元組對齊只要明白其中乙個,另外兩個自然也就理解了。所以這裡只對字對齊做乙個解釋:
假如,第一次取arm指令1的位址為 0x0000 0000,由於arm指令佔32位(4個位元組),因此位址0x0000 0001、0x0000 0002、0x0000 0003都是指令1的地盤。那麼第二次取arm指令2的位址為 0x0000 0004,同樣的道理,0x0000 0005、0x0000 0006、0x0000 0007也都是指令2的地盤,以此類推:
指令1: 0x0000 0000 ——0x0000 0003
指令2: 0x0000 0004 ——0x0000 0007
指令3: 0x0000 0008 ——0x0000 000f
指令4: 0x0000 0010 ——0x0000 0013
…觀察各個指令的 起始位址 :
若按十進位制來看分別是:0、4、8、16、… 都可以被4整除 。
若按二進位制來看bit1和bit0都是0:也就是說它們的起始位址都是 0b******xx ******xx ******xx ****** 00 (32位位址)
字對齊 半字對齊 位元組對齊的理解
一般情況下字為32位 4位元組 半字為16位 2位元組 位元組為8位 1位元組 大多數計算機使用 位元組 8位的資料塊 作為最小可定址的儲存器單位 而不是訪問儲存器中單獨的位。儲存器的每乙個位元組都由唯一的數字標識,稱為該位元組的位址,所有可能位址的集合稱為儲存器空間。舉例來說,arm處理器工作狀態...
字對齊 半字對齊 位元組對齊的理解
一般情況下字為32位 4位元組 半字為16位 2位元組 位元組為8位 1位元組 大多數計算機使用位元組 8位的資料塊 作為最小可定址的儲存器單位,而不是訪問儲存器中單獨的位。儲存器的每乙個位元組都由唯一的數字標識,稱為該位元組的位址,所有可能位址的集合稱為儲存器空間。舉例來說,arm處理器工作狀態有...
字對齊 半字對齊 位元組對齊的理解
一般情況下字為32位 4位元組 半字為16位 2位元組 位元組為8位 1位元組 大多數計算機使用位元組 8位的資料塊 作為最小可定址的儲存器單位,而不是訪問儲存器中單獨的位。儲存器的每乙個位元組都由唯一的數字標識,稱為該位元組的位址,所有可能位址的集合稱為儲存器空間。舉例來說,arm處理器工作狀態有...