ARM体系架构中的存储系统

本文介绍了在ARM体系中数据如何以不同的字节序存储。详细解释了Big-Endian(大端模式)和Little-Endian(小端模式)两种存储方式,并通过实例说明了它们的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

  作者:华清远见讲师

  在计算机系统当中,数据的存储是以字节为单位的,每个地址单元当中都可以存放一个字节的数据,每个字节为8bit。在C语言中编译器为char型的数据分配了一个字节的存储空间,为long型的数据分配了4个字节的存储空间,为int型的数据分配了2个字节的存储空间(要看具体的编译器),这样当所定义的数据类型占用的存储空间大于一个字节时就需要用多个字节的空间来存储一个数据,即一个数据占用了多了地址单元,这样就存在着一个存储顺序的问题,即这几个字节在内存单元中是以什么样的顺序来存储的。

  在ARM体系中通常采用的字节存储机制主要有两种:Big-Endian(大端模式)Little-Endian(小端模式)。Big-Endian是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。Little-Endian是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

  举一个例子,比如十六进制数字0x12345678在内存中的表示形式为:

  1)大端模式:

  低地址 -----------------> 高地址

  0x12 | 0x34 | 0x56 | 0x78

  2)小端模式:

  低地址 ------------------> 高地址

  0x78 | 0x56 | 0x34 | 0x12

  在ARM体系结构中采用Big-Endian存储模式还是Little-Endian存储模式都各有利弊,比如在Little-Endian模式下强制转换数据不需要调整字节内容,而在Big-Endian模式下符号位的判定固定为第一个字节,与Little-Endian模式相比较更容易判断数据的正负。

  在ARM体系中默认的存储格式为小端对齐,但ARM处理器还可以由硬件来选择是大端模式还是小端模式。

  源文:http://www.embedu.org/Column/4096.html

  >>>更多优秀技术博文每日更新         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值