1、字對齊資料,也就是說每個資料都是用字(32位)來表示的,而ARM中的儲存單元都是以位元組為單位,那麼要索引一個數據,需要連續的4個位元組才行,比如,0x0000_0000~0x0000_0003這四個單元儲存一個數據,緊接著0x0000_0004~0x0000_0007這四個單元儲存第二個資料,那麼依此類推,每個資料的儲存起始地址為:
0x0000_0000
0x0000_0004
0x0000_0008
0x0000_000c
0x0000_0010
0x0000_0014
......
可見,這些資料的地址最後一個十六進位制位按照0、4、8、c迴圈,而對應的二進位制為0000、0100、1000、1100。看出來了吧,這些數由於是0x4(0100b)的整數倍,最後兩位都是"00"。
2、同理,半字就是兩個位元組,那麼地址是:
0x0000_0002
由於都是0x2(10b)的整數倍,所以地址的最後一個二進位制位都為"0"。
3、位元組型別資料就是每個位元組地址都用上了。
明白了嗎?
1、字對齊資料,也就是說每個資料都是用字(32位)來表示的,而ARM中的儲存單元都是以位元組為單位,那麼要索引一個數據,需要連續的4個位元組才行,比如,0x0000_0000~0x0000_0003這四個單元儲存一個數據,緊接著0x0000_0004~0x0000_0007這四個單元儲存第二個資料,那麼依此類推,每個資料的儲存起始地址為:
0x0000_0000
0x0000_0004
0x0000_0008
0x0000_000c
0x0000_0010
0x0000_0014
......
可見,這些資料的地址最後一個十六進位制位按照0、4、8、c迴圈,而對應的二進位制為0000、0100、1000、1100。看出來了吧,這些數由於是0x4(0100b)的整數倍,最後兩位都是"00"。
2、同理,半字就是兩個位元組,那麼地址是:
0x0000_0000
0x0000_0002
0x0000_0004
......
由於都是0x2(10b)的整數倍,所以地址的最後一個二進位制位都為"0"。
3、位元組型別資料就是每個位元組地址都用上了。
明白了嗎?