之前有读者提出了一个问题:“大小端与编译器和操作系统有关吗?”
实际上,大小端是由CPU决定的,与编译器和操作系统没有直接相关性。
我曾经在学习的过程中也有相同的疑问,并且觉得很多人可能也没有弄明白这个问题,所以今天我来分享一下相关的内容。
关于大小端
大小端也被称为字节顺序、端序或尾序,即大端序(Big-Endian)和小端序(Little-Endian)。
关于大小端的解释在网上有很多教程,理解起来也并不困难。
-
大端模式:数据的高字节保存在内存的低地址中; -
小端模式:数据的高字节保存在内存的高地址中;
大小端模式:
https://baike.baidu.com/item/大小端模式/6750542
字节顺序:
https://zh.wikipedia.org/wiki/字节序
具体可以参看我之前分享过的文章:CPU大小端之分?
CPU是大小端存储的决定因素
可能部分初学者被一些外界信息给误导,从而有这样的疑惑。
比如:
-
操作系统是大端还是小端存储? -
Keil C51是大端模式,认为与编译器有关。
你了解大小端之后,你会发现,大小端主要有用于存储的顺序,与存储器(硬件)关系比较大,编译器和操作系统仅仅是配合CPU编译好相应的代码,而不是决定大小端的因素。
ARM大小端模式
ARM处理器默认是小端模式,但它是支持大端模式。
我们在Cortex-M3手册中有这么一些描述:在Cortex-M3中, 存储器系统支持 both 小端配置和大端配置。
Cortex-M3 支持 both 小端模式和大端模式。但是,单片机其它部分的设计,包括总线的连接,内存控制器以及外设的性质等, 一定要先在单片机的数据手册上查清楚可以使用的端。在绝大多数情况下,基于 CM3 的单片机都使用小端模式。为了避免不必要的麻烦,基本清一色地使用小端模式。
归根结底,ARM的大小端模式还是与CPU有关,而与编译器和操作系统没有直接关系。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !