1 、ARM 体系中的存储空间
ARM 体系使用单一的地址空间。该地址空间的大小为2^32 个8 位字节。这些字节单元的地址都是无符号的32 位数值, 取值范围是0--2^32-1。
ARM 的地址空间也可以看作是2^30 个32 位的字单元。这些字单元的地址可以被4 整除,也就是说,该地址的低两位为0b00。 地址为A 的字数据包括地址为A 、A + 1 、A + 2 、A+3 四个字节单元的内容。
在ARMv4 及以上的版本中, ARM 的地址空间也可以看作是2 ^31个16 位的半字单元。这些半字单元的地址可以被2 整除, 也就是说, 该地址的最低位为0b0 。地址为A 的半字数据包括地址为A 、A+1两个字节单元的内容。
各存储单元的地址作为32 位的无符号数, 可以进行常规的整数运算。这些运算的结果进行2^32 取模。也就是说, 运算结果发生上溢出和下溢出时, 地址将会发生卷绕。
2、存储格式
每各字单元包含4各字节单元或者2个半字单元;一个半字单元中包含两个字节单元。但是四个字节哪个是高位字节,哪个是地位字节有两种不同的格式:Big-endian格式 Little-endian格式
在Big-endian 格式中,对于地址为A 的字单元,包括字节单元A 、A+1 、A+2 及A+3 ,其中字节单元由高位到低位字节顺序为A 、A + 1 、A + 2 、A+3 ;地址为A 的字单元包括半字单元A 、A + 2 , 其中半字单元由高位到低位字节顺序为A 、A+2; 地址为A 的半字单元包括字节单元A 、A + 1 , 其中字节单元由高位到低位字节顺序为A 、A+I。
在Little-endian 格式中, 地址为A 的字单元包括字节单元A 、A + 1 、A+2 及A + 3 , 其中字节单元由高位到低位字节顺序为A + 3 、A+2 、A + 1 、A;地址为A 的字单元包括半字单元A 、A + 2 , 其中半字单元由高位到低位字节顺序为A + 2 、A; 地址为A 的半字单元包括字节单元A 、A + 1 , 其中字节单元由高位到低位字节顺序为A + 1 、A。