名称解释:
【大端模式】 CPU对操作数的存放方式是高地址存放低位,低地址存放高位。
【小端模式】CPU对操作数的存放方式是高地址存放高位,低地址存放低位。
大多数ARM处理器都是采用的小端模式,PowerPC是采用的大端模式,网络字节序是采用的大端模式。
Linux内核代码向来以简洁高效著称,大小端的判断也是尤为简洁,令人印象深刻:
位于kernel/arch/arm/kernel/setup.c中:
static union {
char c[4];
unsigned long l;
} endian_test __initdata = { { 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.l)
简单几行代码,就可以用来测试当前系统是大端还是小端模式:
if ( 'b' == ENDIANNESS )
printf(" it's big endian");
else
printf("it's little endian");