Linux嵌入式系统开发从小白到大牛
上QQ阅读APP看书,第一时间看更新

4.1 小白也要懂——微处理器字节序列存储的大小端模式

决定字节序存储是大端模式还是小端模式,最主要的是微处理器,其次是操作系统。做Linux嵌入式系统开发,不可避免会遇到字节序在内存中存储的方式,即大端模式和小端模式,这两个存储方式非常容易混淆,用户要对此辩证理解。

计算机系统中对大端模式的定义是,数据权重大的字节存储在低内存地址处,数据权重小的字节存储在高内存地址处。这种存储方式符合人从左至右的运算处理方式。比如字符串顺序,地址是从小到大排列,数据内容也是从高到低存放,和人们的阅读习惯一致。小端模式定义和大端模式相反,数据权重大的字节存储在高内存地址处,数据权重小的字节存储在低内存地址处。大小端模式对于单个字节存储没有争议,主要表现在多字节存储上面,如图4-1所示。

之所以会有大小端模式之分,这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型和32bit的long型(要看具体的编译器)。另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,必然存在一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

图4-1 大小端存储模式