怎么判断嵌入式系统的对齐方式?
来源:百度知道 编辑:UC知道 时间:2024/06/24 16:40:54
是little-endian还是high-endian?
int checkCPU()
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
return (c.b == 1);
}
}
剖析:
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU
对操作数的存放方式是从低字节到高字节,而Big-endian 模式对操作数的存放方式是从高字节到低字
节。例如,16bit宽的数0x1234 在Little-endian 模式CPU 内存中的存放方式(假设从地址0x4000
开始存放)为:
内存地
0x4000
0x4001
址
存放内
0x34
0x12
容
而在Big-endian 模式CPU 内存中的存放方式则为:
内存地
0x4000
0x4001
址
存放内
0x12
0x34
容
32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)
为:
内存地0x4000 0x4001 0x4002 0x4003
73
址
存放内
容
0x78 0x56 0x34 0x12
而在Big-endian 模式CPU 内存中的存放方式则为:
内存地
址
0x4000 0x4001 0x4002 0x4003
存放内
容
0x12 0x34 0x56 0x78
联合