天天看點

字對齊、半字對齊、位元組對齊的了解(轉載)

一般情況下字為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:也就是說它們的起始位址都是 0bxxxxxxxx xxxxxxxx xxxxxxxx xxxxxx 00 (32位位址)

轉自

http://blog.csdn.net/l_andy/article/details/63686870