一般情況下字為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 xxxxxx00(32位地址)
