arm 大端还是小端_ARM大小端格式,编译器决定还是CPU决定?

074672b1c36201f270db80607f46dc4b.png

编辑:黄工

素材来源:网络

有读者问了这么一个问题:大小端与编译器和操作系统有关吗?

其实大小端主要由CPU决定,与编译器、操作系统这些没有直接关系。

因为我以前学习的时候,有很长一段时间也是存在这样的疑问。我觉得应该还有很多人都没搞明白,所以,今天来分享一下相关内容。

一、关于大小端

大小端也可以理解为字节顺序,或者端序、尾序,也就是你们看到的大端序(Big-Endian)、小端序(Little-Endian)。

关于大小端的解释网上很多教程,也不难理解。

大端模式:是指数据的高字节保存在内存的低地址中;

小端模式:是指数据的高字节保存在内存的高地址中;

b15269ed17206a15e8c866ab3027c57f.png

大小端模式:

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

字节顺序:

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

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

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

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

比如:

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

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

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

三、ARM大小端模式

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

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

f14031cac2520f4d129f36a99302f2f8.png

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

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

89fb35093765b56dd747dc3324318d8c.png

1.适用于MCU项目的代码框架BabyOS,工程师的好助手!

2.学习STM32从点灯开始!

3.凝聚信心,承载重托!2020慕尼黑上海电子展7月焕新亮相国家会展中心(上海)

4.用树莓派3b搭建rt-thread开发环境,玩一下吧!

5.STM32 MPU开发者的十大工作准则

6.特斯拉自动驾驶车祸调查结果的背后,Autopilot系统是否被过度神话?

96c8d4b34fe78380e7ae99700af2446c.gif

免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值