之前也关注过大小端的存储,可能时间久了,加之又之前的电脑抽象换成了当前的处理器寄存器的值判断,导致自己总是有点蒙圈。看Spec手册的时候,有时会无法与手册中某个Bit的值与RU/RW工具读出来的对应上。这就很尴尬了。专门花时间整理下该部分的内容:

1. 什么是大小端

先解释下什么是大小端(自行百度)

2. X86处理器用RU工具读取的值如何与Spec的描述进行Bit对应

2.1 如:下面是一个Spec中GP_LVL寄存器,另一个是RU工具读出来的。我想判断该寄存器的Bit3的值是多少,这下犯难了,大小端的不理解,让我有点混淆。

2.2 为了理清楚这个问题,专门做了下述实验

我们看Spec时1个4字节32Byte的的寄存器,通常是bit31~bit0这样来看,由高到底,那么对应到寄存器中,如何将RU读出来的四个字节的数据与这个bit31~bit0对应起来呢。

这个寄存器是一个控制GPIO电平的寄存器,32个bit控制了31个GPIO的电平,基本可以理解为,bit0对那个GPIO0,biit1对应GPIO1。

1)输出GPIO8为1为0,看哪一位置在变化

这个步骤,我通过CPU实际操作了一把。前后的数据变化为下图所示

仅有这一次的数据变化,还不够,因此我又加了GPIO3的变化,数据变化是:3F->37

因此综上两个变化,可以得到下面的对应图:即bit3对应0c的字节,bit8对应0d的字节。进而我们可以推出来

  • bit7~bit0在内存中的存储对应关系为:bit7~bit0对应低字节的位置,且字节内的bit对应关系为一一对应
  • bit15-bit8在内存中的存储对应关系为:bit15~bit8对应第二小字节的位置,且字节内的bit对应关系为一一
  • ……(以此类推)

由此就得到了如何在RU中的数据与Spec的bit对应起来的结论。

【X86】---X86处理器大小端的数据存储验证的更多相关文章

  1. mips32和x86下的大小端模式判定

    一.背景 1.1 mips32搭载32bit vxworks操作系统 1.2 x86搭载64bit windows10操作系统 二.大小端模式判定前的准备 2.1 先要知道各种架构上各种整型数占据的b ...

  2. 服务端指南 数据存储篇 | 聊聊 Redis 使用场景(转)

    作者:梁桂钊 本文,是升级版,补充部分实战案例.梳理几个场景下利用 Redis 的特性可以大大提高效率. 随着数据量的增长,MySQL 已经满足不了大型互联网类应用的需求.因此,Redis 基于内存存 ...

  3. MVC通过服务端对数据进行验证(和AJAX验证一样)

    在实体类中 添加 Remote属性,指定用某个View下的某个方法进行验证,如下面表示用User控制器中的UserExiting方法验证 public    class   User { [Remot ...

  4. 关键词:ACM & 大小端 & 面试官

    关于“ACM” fender0107401 :面试了一个在ACM拿过奖的人 我问了他几个问题: 读取数组中的一个元素,计算复杂度是多少,回答不清楚. 往链表里面存一个数,不排序的情况下,计算复杂度是多 ...

  5. C++/java之间的Socket通信大小端注意事项

    在一个物联往项目中,需要java云平台与一个客户端做socket定制协议的通信:然而在第一次测试时,并没有按照预想的那样完成解析.查找资料以后是因为客户端的数据读取方式为小端模式,而java默认采用大 ...

  6. 判断大小端的方法(java和c++)

    首先我们给出大小端的定义: 小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址. 大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址. 将 ...

  7. 大数据存储:MongoDB实战指南——常见问题解答

    锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...

  8. Java核心知识盘点(一)- 数据存储

    MySQL 索引使用的注意事项 1.索引的目的:在于提高查询效率,插入和更新的操作,数据库的操作是慢的,但是查询操作会非常快,索引可以对表中一个或多个字段进行加索引动作. 2.索引的类型: 1.唯一索 ...

  9. 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)

    https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...

随机推荐

  1. H3C PPP基本概念

  2. ASP.NET一般登陆逻辑分享(01)

  3. springboot + rabbitmq发送邮件(保证消息100%投递成功并被消费)

    前言: RabbitMQ相关知识请参考: https://www.jianshu.com/p/cc3d2017e7b3 Linux安装RabbitMQ请参考: https://www.jianshu. ...

  4. python基础八之文件操作

    python的文件操作 1,打开文件 编码方式要和文件的编码方式相同! #open('路径','打开方式','指定编码方式') f = open(r'E:\pycharm\学习\day8\test', ...

  5. 【js】 vue 2.5.1 源码学习(十二)模板编译

    大体思路(十) 本节内容: 1. baseoptions 参数分析 2. options 参数分析 3. parse 编译器 4. parseHTNL 函数解析 // parse 解析 parser- ...

  6. P1038 间谍入侵

    题目描述 爱丽丝魔法王国成立10周年,于是决定矩形国庆大阅兵. 在国庆大阅兵期间,为了防止暗黑王国的间谍乔装成平民混入,需要对每一个进城的人做检测. 因为暗黑王国的人长得和爱丽丝魔法王国的人长得很像, ...

  7. H3C设置下次启动的配置文件

  8. Lede定时重拨

    系统,计划任务,   0 4 * * * ifup wan 梅林定时重拨: #! /bin/sh #断开拨号连接 killall pppd #延时10秒 #重新拨号 pppd >& &a ...

  9. MYSQL 查询日期最大的那条记录

    首先把官网示例拿出来: 连接查询比子查询性能更好 3.6.4 The Rows Holding the Group-wise Maximum of a Certain Column Task: For ...

  10. sql查询分类和所有子类

    select * from [JianDu].[dbo].[ZuZhiJiGou] where id = 64 --查询节点 union allSELECT TOP 1000 a.* FROM [Ji ...