首先我们要知道的一点是:在Linux内核中,不同CPU里面,各自的字节序定义都不同。
本次用于分析的 Linux 内核版本为: linux--3.0.0-12。
arch/XXX/include/asm/byteorder.h:不同CPU(XXX)的字节序定义
1)ARM(XXX=arm):
#ifdef __ARMEB__
#include <linux/byteorder/big_endian.h>
#else
#include <linux/byteorder/little_endian.h>
#endif
(2)PowerPC(XXX=powerpc)
#include <linux/byteorder/big_endian.h>
(3)X86(XXX=x86)
#include <linux/byteorder/little_endian.h>
本次用于分析的 Linux 内核版本为: linux--3.0.0-12。
arch/XXX/include/asm/byteorder.h:不同CPU(XXX)的字节序定义
1)ARM(XXX=arm):
#ifdef __ARMEB__
#include <linux/byteorder/big_endian.h>
#else
#include <linux/byteorder/little_endian.h>
#endif
(2)PowerPC(XXX=powerpc)
#include <linux/byteorder/big_endian.h>
(3)X86(XXX=x86)
#include <linux/byteorder/little_endian.h>
由上面举的3个例子,可以看出三种不同的CPU对于各自的字节序定义有所不同。

本文介绍了Linux内核3.0.0-12版本中不同CPU架构下的字节序定义,包括ARM、PowerPC和X86等。通过分析源代码文件arch/XXX/include/asm/byteorder.h,展示了不同CPU如何根据自身特性选择大端或小端字节序。
1652

被折叠的 条评论
为什么被折叠?



