Linux大小端判断

名称解释:

【大端模式】 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");

你可能感兴趣的:(Linux)