Intel架构的基本知识

news2025/1/11 20:58:58

字节序

字节序根据存储的方向不同, 分为大端字节序(big-endian) 和 小端字节序(little-endian)

大端字节序(big-endian): 低字节存储在起始地址

小端字节序(little-endian): 高字节存储在起始地址

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

获得当前主机字节序

#include <iostream>

using namespace std;

int main()
{
    union {
            short s;
            char c[sizeof(short)];
    } un;

    un.s = 0x0102;

    if(sizeof(short) == 2)
    {
        if(un.c[0] == 1 && un.c[1] == 2)
        {
            cout << "大端字节序" << endl;
        } else if(un.c[0] == 2 && un.c[1] == 1)
        {
            cout << "小端字节序" << endl;
        } else 
        {
            cout << "unknown" << endl;
        }
    } else
    {
        cout << "sizeof(short) = " << sizeof(short) << endl;
    }

    return 0;
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

32位环境中的寄存器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通用寄存器的用途
通用寄存器用途
EAX操作数的运算, 结果
EBX指向数据段(DS)寄存器中数据的指针
ECX字符串操作或循环的计数器
EDX输入输出指针
ESI指向数据段(DS)寄存器中某个数据的指针, 或者字符串操作中字符串的复制源(source)
EDI指向数据段(ES)寄存器中某个数据的指针, 或者字符串操作中字符串的复制目的地(destination)
ESP栈指针(堆栈段SS)
EBP指向栈上数据的指针(堆栈段)

通用寄存器的用途不限于上述, 只作为参考

段寄存器的用途
段寄存器用途
CS代码段
DS数据段
堆栈段
ES数据段
FS数据段
GS数据段

程序代码放在代码段, 数据放在数据段, 程序所用的栈放在堆栈段中

EFLAGS寄存器

包含状态标志(status flag), 控制标志(control flag), 系统标志(system flag)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

EIP寄存器

用来存储CPU 32位指令指针

CPU每次执行控制器读取完,相应的就再通过EIP寄存器去进行下一次的读取指令工作。每次CPU读取指令到指令缓冲区,相应的EIP寄存器的值增加,增加大小的就是读取指令的字节大小

其他寄存器

控制寄存器(CR0 ~ CR4)

GDRT, IDTR, TR, LDTR

调试寄存器(DR0/DR1/DR2/DR3/DR6/DR7)

内存类型范围寄存器 MTRR, MSR(Model Specific Register) 寄存器

机器检查寄存器(Machine check Register)

性能监控寄存器(Performance Monitoring Counter)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

64位环境中的寄存器

对比32位寄存器, 64位支持的地址空间为264

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

64位模式下, 通用寄存器在处理32位操作时, 使用EAX/EBX/ECX/EDX/EDI/ESI/EBP/R8D ~ R15D 寄存器

处理64位操作时, 使用RAX/RBX/RCX/RDX/RDI/RSI/RBP/RSP/R8~R15

R8D~R15D / R8 ~ R15 是8个新的通用寄存器

RIP寄存器64位指令寄存器

栈指针和控制寄存器都可以扩展64位,并增加CR8寄存器

调试寄存器可以扩展到64位

GDTR, IDTR可以扩展到10字节

LDTR, TR可以扩展到64位

地址

**物理地址:**CPU通过内存总线访问到的地址

32位模式下最大物理地址64GB(236)

64位模式下最大物理地址: intel(240), AMD(248)

操作系统原理——内存的分段、分页和平坦模型:区别与发展

平坦内存模型

线性地址空间: 单一, 平坦的连续地址空间

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

linux采用这种内存模型

64位模式采用平坦模式, 不能使用分段式内存模型

分段式内存模型

内存看做段(segment)的独立地址空间集合

通过段选择器和偏移量组成逻辑地址访问段内地址

32位下最多指定16383个段, 各段最大大小为232字节

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据类型

基本数据类型:

字节(8bit), 字(16bit), 双字(32bit), 四字(64bit), 双字(128bit)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

整数

整数数据类型:

支持 无符号整数 和 符号整数

无符号整数范围: 0 ~ 最大整数(2n - 1)

符号整数范围: 负数(-2n-1) ~ 正数(2n-1-1)

浮点数据类型:

单精度浮点数(32位) 精度: 24bit

双精度浮点数(64位) 精度: 53bit

扩展精度浮点数(80位) 精度: 64bit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LabVIEW崩溃后所产生的错误日志文件的位置

LabVIEW崩溃后所产生的错误日志文件的位置 LabVIEW开发环境刚刚崩溃&#xff0c;请问我如何访问崩溃后自动生成的日志文件&#xff1f; LabVIEW崩溃后产生的转储文件位于何处&#xff1f; 代码导致了LabVIEW崩溃&#xff0c;请问哪些文件可以帮助NI技术支持了解具体原因&…

如何做到人声和背景音乐分离?简单粗暴,赶紧学起来~

在这个短视频盛行的时代&#xff0c;优质的背景音乐会让视频锦上添花&#xff0c;但也会造成类似的问题&#xff1a;想单独使用视频中的某一段人声&#xff0c;但会被背景音乐扰乱视听效果。这时就需要将人声和背景音乐进行分离了&#xff0c;今天就来教大家如何将人声和背景音…

最新文档:微信、企业号+地理位置定位+地图展示

概述 公司有需求&#xff0c;通过企业号打卡项目&#xff0c;需要用到企业微信定位 详细 前言 demo是基于微信、企业号平台的一个定位&#xff0c;地图展示项目 后台使用springboot架构搭建的与微信交互的服务&#xff0c;使用httpclient连接池&#xff0c;调用微信接口&…

小黑子—MyBatis:第二章

MyBatis入门2.0 四 小黑子诉说Mybatis核心配置文件详情4.1 多环境4.2 Mybatis的事务管理器 - transactionManager4.3 dataSource&#xff08;数据源&#xff09;4.3.1 不同类型下的数据源有不同的属性4.3.2 pool 和 unpooled 的区别4.3.3 配置具体的数据库连接池对象 4.4 prope…

【操作系统笔记三】内存寻址

物理寻址 主存&#xff08;内存&#xff09; 计算机主存也可以称为物理内存&#xff0c;内存可以看成由若干个连续字节大小的单元组成的数组每个字节都有一个唯一的物理地址&#xff08;Physical Address&#xff09;CPU访问内存前&#xff0c;先拿到内存地址&#xff0c;然后…

Django — 会话

目录 一、Cookie1、介绍2、作用3、工作原理4、结构5、用途6、设置7、获取 二、Session1、介绍2、作用3、工作原理3、类型4、用途5、设置6、获取7、清空信息 三、Cookie 和 Session 的区别1、存储位置2、安全性3、数据大小4、跨页面共享5、生命周期6、实现机制7、适用场景 四、P…

掌动智能浅析故障注入测试的好处与实践方法

在现代技术环境中&#xff0c;系统面临各种潜在的威胁和故障&#xff0c;如硬件故障、网络问题、软件错误等。为了应对这些挑战&#xff0c;开发团队需要确保系统在逆境中依然能够提供可靠的服务。故障注入测试是一种模拟现实故障和异常情况的方法&#xff0c;旨在提高系统的鲁…

vue3+ts+java使用WebSocket传输数据

一、环境 系统&#xff1a;win11 IDE&#xff1a;vscode 框架&#xff1a;electron22.0.0vite2vue3typescript4.8.4springboot2.2.5jdk1.8 二、websocket介绍 2.1 由来 WebSocket未出现之前&#xff0c;浏览器和服务器之间的通信是通过Web的poll技术进行通信&#xff0c;就…

牛客java训练题 day1

9.24 day1 Q 1. this 指针是用来干什么的&#xff1f; 2.基类和派生类分别是指什么&#xff1f; 3.为什么方法中不能写静态变量 4. 解释一下ASCII码和ANSI码和两者的区别 5.简述j ava.io java.sql java.awt java.rmi 分别是什么类型的包 6. 看下面一段代码&#xff1a;…

分类预测 | Matlab实现NGO-CNN-SVM北方苍鹰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现NGO-CNN-SVM北方苍鹰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现NGO-CNN-SVM北方苍鹰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现NGO-CNN-SVM北方苍鹰算法优化卷积支持向量机分类预…

安全防御第二次作业

1. 防火墙支持那些NAT技术&#xff0c;主要应用场景是什么&#xff1f; 防火墙支持几乎所有的NAT技术&#xff0c;包括源NAT、目标NAT、双向NAT等&#xff0c;主要应用场景是保护内部网络免受外部网络的攻击 NAT技术可以将IP数据报文头中的IP地址转换为另一个IP地址&#xff…

暴力递归转动态规划(七)

题目 LeetCode原题-最长回文子序列 给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a; 输入&a…

【【萌新的FPGA学习之按键控制LED实验】】

按键控制LED实验 在写这篇文章之前我必须对我的错误表示深刻的道歉 因为我之前的文章自己也是边看边学给大家带来了大的困扰 抱歉抱歉 我们这里讲述一下综合和仿真的关系 其实我们更多的是应该关注仿真下得到的波形情况 然后分析 对于综合&#xff0c;综合的最大的目的还是看功…

计算机等级考试—信息安全三级真题二

目录 一、单选题 二、填空题 三、综合题 一、单选题

数据结构的奇妙世界:实用算法与实际应用

文章目录 数据结构和算法的基本概念数据结构数组链表栈队列树图 算法 常见的数据结构和算法排序算法快速排序示例 数据结构的应用数据库管理系统图像处理网络路由 数据结构和算法的性能分析时间复杂度空间复杂度 如何更好地编写代码避免常见错误结论 &#x1f389;欢迎来到数据…

Qt地铁智慧换乘系统浅学( 三 )最少路径和最少换乘实现

本算法全都基于广度优先 概念最短路径实现所用容器算法思路 最少换乘实现所需容器算法思路 成果展示代码实现判断是最短路径还是最少换乘最短路径代码实现最少换乘代码实现根据所得List画出线路 ui界面的维护&#xff08;前提条件&#xff09;界面初始化combox控件建立槽函数 概…

把Eclipse整个文件夹添加到Microsoft Defender的排除项中

一.原因&#xff1a; Windows 10卫士显著降低了Eclipse的速度&#xff0c;原因是Windows 10卫士扫描JAR文件。这个问题已经报告给微软了。在此之前&#xff0c;解决此问题的一个方法是将Eclipse根目录添加到Windows 10 Defender的排除列表中&#xff0c;详细步骤在这里共享。 …

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(五)

接受自己原本的样子&#xff0c; 比努力扮演另一个轻松多了。 思维导图 对象 什么是对象 对象使用 遍历对象 索引号是字符串型&#xff0c;不推荐遍历数组。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><me…

docker实现mysql主从复制(巨详细!!!)

docker实现mysql主从复制&#xff08;巨详细&#xff01;&#xff01;&#xff01;&#xff09; 新建主机服务容器实例3307进入/mydata/mysql-master/conf目录下新建my.cnf修改完配置后重启master实例进入mysql-master容器master容器实例内创建数据同步用户新建 服务器容器实例…