ARM的数据类型:
ARM采用的是32位架构,基本数据类型有以下三种:
Byte:字节,8bit
Halfword:半字,16bit,(半字必须与2字节边界对齐)
Word:字,32bit,(字必须与4字节边界对齐)
ARM指令编译后是4个字节(与字边界对齐)
Thumb指令编译后是2个字节(与半字边界对齐)
存储器大小端问题:
ARM支持大端模式和小端模式两种内存模式。
Big-Endian和Little-Endian的定义如下:
- Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
- Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:
1)大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
可见,大端模式和字符串的存储模式类似。
在ubuntu上验证自己电脑是大端对齐还是小端对齐:
结论:我的计算机数据存储小端对齐