良许Linux教程网 干货合集 大小端格式由编译器还是CPU决定的?

大小端格式由编译器还是CPU决定的?

关于大小端与编译器和操作系统之间的关系,实际上主要由CPU决定,并与编译器、操作系统并无直接关系。

有读者提出了这样一个问题,关于大小端与编译器和操作系统是否有关。事实上,大小端的存储方式主要由CPU决定,与编译器和操作系统并没有直接的关联。

在我以前学习的过程中,也曾经对此有过疑问。我相信许多人也可能还不太了解这个问题,因此今天我想分享一些相关的内容。

一、关于大小端存储方式

大小端存储方式也被称为字节顺序、端序或尾序,即大端序(Big-Endian)和小端序(Little-Endian)。

关于大小端存储方式的解释在网络上有很多教程,而且并不难理解。

  • 大端模式: 数据的高字节保存在内存的低地址中;
  • 小端模式: 数据的高字节保存在内存的高地址中;
image-20231216200311255
image-20231216200311255

大小端模式:

https://baike.baidu.com/item/大小端模式/6750542

字节顺序:

https://zh.wikipedia.org/wiki/字节序

也可以参看我之前分享过的文章:你真的懂CPU大小端模式吗?

二、CPU是大小端存储的决定因素

可能部分初学者被一些外界信息给误导,从而有这样的疑惑。

比如:

操作系统是大端还是小端存储?

Keil C51是大端模式,认为与编译器有关。

你了解大小端之后,你会发现,大小端主要有用于存储的顺序,与存储器(硬件)关系比较大,编译器和操作系统仅仅是配合CPU编译好相应的代码,而不是决定大小端的因素。

三、ARM大小端模式

ARM处理器默认是小端模式,但它是支持大端模式。

我们在Cortex-M3手册中有这么一些描述:在Cortex-M3中, 存储器系统支持 both 小端配置和大端配置。

image-20231216200318350
image-20231216200318350

Cortex-M3 支持 both 小端模式和大端模式。但是,单片机其它部分的设计,包括总线的连接,内存控制器以及外设的性质等, 一定要先在单片机的数据手册上查清楚可以使用的端。在绝大多数情况下,基于 CM3 的单片机都使用小端模式。为了避免不必要的麻烦,基本清一色地使用小端模式。

归根结底,ARM的大小端模式还是与CPU有关,而与编译器和操作系统没有直接关系。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部