【X86】---X86处理器大小端的数据存储验证
之前也关注过大小端的存储,可能时间久了,加之又之前的电脑抽象换成了当前的处理器寄存器的值判断,导致自己总是有点蒙圈。看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处理器大小端的数据存储验证的更多相关文章
- mips32和x86下的大小端模式判定
一.背景 1.1 mips32搭载32bit vxworks操作系统 1.2 x86搭载64bit windows10操作系统 二.大小端模式判定前的准备 2.1 先要知道各种架构上各种整型数占据的b ...
- 服务端指南 数据存储篇 | 聊聊 Redis 使用场景(转)
作者:梁桂钊 本文,是升级版,补充部分实战案例.梳理几个场景下利用 Redis 的特性可以大大提高效率. 随着数据量的增长,MySQL 已经满足不了大型互联网类应用的需求.因此,Redis 基于内存存 ...
- MVC通过服务端对数据进行验证(和AJAX验证一样)
在实体类中 添加 Remote属性,指定用某个View下的某个方法进行验证,如下面表示用User控制器中的UserExiting方法验证 public class User { [Remot ...
- 关键词:ACM & 大小端 & 面试官
关于“ACM” fender0107401 :面试了一个在ACM拿过奖的人 我问了他几个问题: 读取数组中的一个元素,计算复杂度是多少,回答不清楚. 往链表里面存一个数,不排序的情况下,计算复杂度是多 ...
- C++/java之间的Socket通信大小端注意事项
在一个物联往项目中,需要java云平台与一个客户端做socket定制协议的通信:然而在第一次测试时,并没有按照预想的那样完成解析.查找资料以后是因为客户端的数据读取方式为小端模式,而java默认采用大 ...
- 判断大小端的方法(java和c++)
首先我们给出大小端的定义: 小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址. 大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址. 将 ...
- 大数据存储:MongoDB实战指南——常见问题解答
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...
- Java核心知识盘点(一)- 数据存储
MySQL 索引使用的注意事项 1.索引的目的:在于提高查询效率,插入和更新的操作,数据库的操作是慢的,但是查询操作会非常快,索引可以对表中一个或多个字段进行加索引动作. 2.索引的类型: 1.唯一索 ...
- 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)
https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...
随机推荐
- java方法特点
它可以实现独立的功能; 必须定义在类里面; 它只有被调用才会执行; 它可以被重复使用; 方法结束后方法里的对象失去引用; 如何定义一个功能,并通过方法体现出来: ① 明确该功能运算后的结果.明确返回值 ...
- win10 uwp 使用 Border 布局
在 UWP 写一个界面需要将元素排列,在排列元素的时候有特殊的元素叫容器.容器的意思是元素里面包含元素,在 UWP 用到的容器有很多,也可以自己写一个.简单的容器是 Border 边框控件,如控件说的 ...
- react 父组件与子组件双向绑定
在项目中我们可能会遇到类似这样的场景,也就是父子组件的双向数据绑定 首先,先把在head中引入react.js.react-dom.js和可选择的babel.js(这里需要注意引用的顺序,react. ...
- ajaxSetup()方法
使用ajaxSetup()方法设置全局Ajax默认选项 使用ajaxSetup()方法可以设置Ajax请求的一些全局性选项值,设置完成后,后面的Ajax请求将不需要再添加这些选项值,它的调用格式为: ...
- 面试题 —— Ajax的基本原理总结
Ajax 的全称是Asynchronous JavaScript and XML(异步的JavaScript 和 XML),其中,Asynchronous 是 异步 的意思,它有别于传统web开发中采 ...
- python知识点总结01(不定时更新)
手写一个完整的装饰器模版 # 用于修复被装饰对象的名称空间 from functools import wrape def wrapper(func): @wraps(func) def inner( ...
- final阶段20191121-5 Scrum立会报告+燃尽图 01
此作业要求参见:http://edu.cnblogs.com/campus/nenu/2019fall/homework/10065 一: 组名:组长组 组长:杨天宇 组员:魏新 罗杨美慧 王歆 ...
- 调用第三方库时需注意MD/MT的链接编译方式(遇到的坑记录)
MD与/MT编译 1./MD是动态库链接方式编译 (DEBUG版本是/MDd) 2./MT是静态库链接方式编译 (DEBUG版本是/MTd) 编译器不会检查到的问题 我今天遇到的记录下来 当你调用第三 ...
- 【题解】P5589 小猪佩奇玩游戏(期望)
[题解]P5589 小猪佩奇玩游戏(期望) 假设一个点有\(x\)个点(包括自己)可以到达他,他就对答案有\(1/x\)的贡献.这是因为这个点必须被删掉而通过删掉这个点本身删掉这个点的概率是\(1/x ...
- 洛谷$P$3327 约数个数和 $[SDOI2015]$ 莫比乌斯反演
正解:莫比乌斯反演 解题报告: 传送门! 先考虑证明一个结论,$d_{i\cdot j}=\sum_{p|i}\sum_{q|j}[gcd(p,q)==1]$ 看起来就很对的样子,但还是证下趴$QwQ ...