01 【哈工大_操作系统】x86_64 常用寄存器大全

在学习CPU底层技术的时候,难免会接触到各式各样的寄存器。尤其是在使用汇编语言编写操作系统时,寄存器更是必不可少的。因此,这篇文章将来详细聊聊 x86_64 架构中的所有寄存器,按照从 常用->不常用 的顺序来进行介绍。

首先,什么是寄存器?

寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息。

从操作系统使用的角度出发, 按照寄存器类型,可以分成如下几类:

16 _bits_:数据寄存器(可拆为两个独立的 8 _bits_ 寄存器)段寄存器变址寄存器指针寄存器
32 _bits_:通用寄存器控制寄存器...

一、16 bits(实模式)

8086 CPU 中寄存器总共为 14 个 16 bits 寄存器。

  • 数据寄存器
寄存器用途
AX累加寄存器,AH:AL,可分别访问高八位、低八位。
通常作为临时寄存器,为段寄存器赋值;或可用于汇编乘(MUL)除(DIV)法临时寄存器。
BX基地址寄存器,BH:BL,可分别访问高八位、低八位。
通常作为存储器指针。
CX计数器寄存器,CH:CL,可分别访问高八位、低八位。
通常作为串操作或循环控制中的计数器
DX数据寄存器,DH:DL,可分别访问高八位、低八位。
与 AX 配合用于字乘/除法。
  • 段寄存器
寄存器用途
CS代码段段地址寄存器
通常与代码段寄存器CS组合为CS:IP作为代码段地址,指向下一条要执行的指令
DS数据段段地址寄存器
通常与变址寄存器SI组合为DS:SI,作为串操作源地址
SS堆栈段段地址寄存器
通常与堆栈指针寄存器SP组合为SS:SP来使用
ES附加段段地址寄存器
通常与变址寄存器DI组合为ES:DI,作为串操作目的地址
  • 变址寄存器
寄存器用途
SI源地址寄存器
通常作为串操作中的源地址
DI目的地址寄存器
通常作为串操作中的目的地址
  • SI 与 数据段寄存器 DS 组成 DS:SI,通常用来表示汇编指令的源地址
  • DI 与 附加段寄存器 ES 组成 ES:DS,通常用来表示汇编指令的目的地址
    如:当调用 movsb 指令,就会从源地址复制一个字节的数据到目的地址
  • 指针寄存器
寄存器用途
SP堆栈指针寄存器
通常与堆栈段寄存器组合使用
BP基址指针寄存器
通常存取堆栈的指针
  • 控制寄存器
寄存器用途
IP指令指针寄存器
通常与代码段寄存器CS组合为CS:IP作为代码段地址,指向下一条要执行的指令
FLAG标志寄存器,记录CPU执行过程中的一系列状态
OF:溢出标志
SF:符号标志
ZF:零标志
CF:进位标志
AF:辅助进位标志
DF:方向标志
IF:中断标志
TF:陷阱标志
PF:奇偶标志

举个例子:

cmp AL, #0x3a
jl START

上述指令实现:将寄存器 AL 的值与立即数 #0x3a 进行比较,若 AL < #0x3a,则置位零标志位 ZF,jl 指令再通过判断 ZF 大小,跳转到 START 处。若 AL ≥ #0x3a,则不跳转。

二、32 bits(保护模式)

32 bits 寄存器与 16 bits 寄存器一样,同样可以分为数据寄存器、变址寄存器、指针寄存器、控制寄存器,我们不再一一分类,将其归纳如下所示。

  • 通用寄存器
寄存器用途
EAX累加寄存器,通常作为用来执行加法
EBX基地址寄存器,通常用于数据存取
ECX计数器寄存器,通常用作计数器
EDX数据寄存器,通常用来存储临时数据
ESP栈顶指针,指向栈的顶部
EBP栈底指针,指向栈的底部,通常用ebp+偏移量的形式来定位函数存放在栈中的局部变量
ESI源地址寄存器,通常作为串操作中的源地址
EDI目的地址寄存器,通常作为串操作中的目的地址
EIP指令指针寄存器
通常与代码段寄存器CS组合为CS:IP作为代码段地址,指向下一条要执行的指令地址
EFLAGS标志寄存器,记录CPU执行过程中的一系列状态,如下图所示

在这里插入图片描述

  • 控制寄存器

在这里插入图片描述
本文目前只更新了李治军老师【操作系统】课程中常用的寄存器,包括16位的和32位的,一些尚未使用到的还未更新,具体可以参考《Linux内核完全注释(修正版v3.0).pdf》第四章,这一章详细介绍了 80x86 系统寄存器大全。

待更新…后续将继续更新【操作系统】课程中所使用到的寄存器

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

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

相关文章

Spark-机器学习(4)回归学习之逻辑回归

在之前的文章中&#xff0c;我们来学习我们回归中的线性回归&#xff0c;了解了它的算法&#xff0c;知道了它的用法&#xff0c;并带来了简单案例。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请…

Syncovery for Mac v10.14.3激活版:文件备份和同步工具

Syncovery for Mac是一款高效且灵活的文件备份与同步工具&#xff0c;专为Mac用户设计&#xff0c;旨在确保数据的安全性和完整性。该软件支持多种备份和同步方式&#xff0c;包括本地备份、网络备份以及云备份&#xff0c;用户可以根据实际需求选择最合适的方案。 Syncovery f…

信息系统项目管理师0062:需求分析(5信息系统工程—5.1软件工程—5.1.2需求分析)

点击查看专栏目录 文章目录 5.1.2需求分析1.需求的层次2.需求过程3.UML4.面向对象分析记忆要点总结5.1.2需求分析 软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。根据IEEE的软件工程标准词汇表,软件需求是指用户解决问题或达到目标所需的条件或能力,是…

【深度学习】烟雾和火焰数据集,野外数据集,超大量数据集,目标检测,YOLOv5

标注了2w张数据集&#xff0c;是目标检测yolo格式的&#xff0c;有火焰、烟雾两个目标。 训练方法看这里&#xff1a; https://qq742971636.blog.csdn.net/article/details/138097481 打包 依据不一样的需求&#xff0c; 详情请查看 https://docs.qq.com/sheet/DUEdqZ2l…

多元函数泰勒公式(含黑塞矩阵)

一元函数的泰勒公式&#xff1a; 接下来&#xff0c;由一元函数有关知识&#xff0c;我们有: 注意这里的dxn中&#xff0c;应把dx看作一个整体&#xff0c;即一个微小变量的n次方 我们接下来推导微分算子&#xff1a; 接下来&#xff0c;把一元泰勒公式转为微分形式: 对于二元…

React.js 3D开发快速入门

如果你对 3D 图形的可能性着迷&#xff0c;但发现从头开始创建 3D 模型的想法是不可能的 - 不用担心&#xff01; Three.js 是一个强大的 JavaScript 库&#xff0c;它可以帮助我们轻松地将现有的 3D 模型集成到 React 应用程序中。因此&#xff0c;在本文中&#xff0c;我将深…

ExcelVBA把当前工作表导出为PDF文档

我们先问问Kimi Excel导出为PDF的方法有多种&#xff0c;以下是一些常见的方法&#xff1a; 1 使用Excel软件的内置功能&#xff1a; 打开Excel文件&#xff0c;点击“文件”菜单。选择“另存为”&#xff0c;在“保存类型”中选择“PDF”。设置保存路径和文件名&#xff0c;点…

【机器学习】重塑汽车设计与制造:实例与代码探索

机器学习重塑汽车设计与制造 一、机器学习在汽车设计中的应用二、机器学习在智能制造与生产中的应用 在数字化浪潮的推动下&#xff0c;机器学习技术正逐步成为汽车行业的创新引擎。从概念设计到智能制造&#xff0c;机器学习正以其独特的优势助力汽车产业的革新与发展。本文将…

数据挖掘实验(Apriori,fpgrowth)

Apriori&#xff1a;这里做了个小优化&#xff0c;比如abcde和adcef自连接出的新项集abcdef&#xff0c;可以用abcde的位置和f的位置取交集&#xff0c;这样第n项集的计算可以用n-1项集的信息和数字本身的位置信息计算出来&#xff0c;只需要保存第n-1项集的位置信息就可以提速…

day06 51单片机-点阵led

1 点阵LED 1.1 需求描述 本案例介绍如何使用点阵LED显示一排由左上到右下的斜线。 1.2 硬件设计 1.2.1 硬件原理图 点阵内部的原理图: 点阵LED的原理也非常简单,就是LED点灯。例如,我们想要让13列(阳极端)9行(阴极端)的LED点亮,需要13为高电平,9为低电平。注意对于…

苍穹外卖day8(2)用户下单、微信支付

文章目录 前言一、用户下单1. 业务流程2. 接口设计3. 数据库设计3.1 订单表orders3.2 订单明细表 order_detail 4. 代码实现 二、订单支付 前言 用户下单 因为订单信息中包含了其他业务中的数据&#xff0c;在逻辑处理中涉及了多个其他业务&#xff0c;比如要判断地址簿、购物…

基于SSM+Vue的护工预约服务小程序和后台管理系统

1、系统演示视频&#xff08;演示视频&#xff09; 2、需要请联系

虚拟化+Docker基本管理

一、虚拟化简介 1、云端 华为云、谷歌云、腾讯云、阿里云、亚马逊、百度云、移动云、天翼云、西部数码云等 1.国内云 华为云、阿里云、腾讯云、天翼云(私有云) 2.国外云 谷歌云、亚马逊 2、云计算的服务模式是分层的 IaaS&#xff1a;Infrastructure&#xff08;基础设…

计算机网络【CN】Ch3 数据链路层

目录 数据链路层的功能 【※】VLAN 三种划分VLAN的方法&#xff1a; 【※】MAC帧格式 【※】三种可靠传输机制 ​编辑 【※】介质访问控制 信道划分介质访问控制 随机介质访问控制 CSMA CSMA/CD【有线】 CSMA/CA【无线】 信道利用率技巧 循环冗余校验CRC 以太网[802.3] 以太网…

项目实战 | 责任链模式 (下)

案例二&#xff1a;工作流&#xff0c;费用报销审核流程 同事小贾最近刚出差回来&#xff0c;她迫不及待的就提交了费用报销的流程。根据金额不同&#xff0c;分为以下几种审核流程。报销金额低于1000元&#xff0c;三级部门管理者审批即可&#xff0c;1000到5000元除了三级部…

智己汽车数据驱动中心PMO高级经理张晶女士受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 智己汽车科技有限公司数据驱动中心PMO高级经理张晶女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“规模化敏捷落地实践”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 2…

【Java学习笔记】9.5 Java中的Lambda表达式

Lambda表达式是从Java8版本开始增加的语法。Lambda表达式有利于实现函数式编程&#xff0c;简化开发。 9.5.1 Lambda表达式入门 Lambda表达式由三部分组成&#xff1a;参数列表、箭头(->),及一个表达式或语句块。其完整的语法格式如下&#xff1a; (Type 1 param1 , Type…

hcip实验 — 路由策略实验

目录 实验拓扑 实验要求 实验思路 实验步骤 1.配置接口及环回ip 2.配置ospf协议及rip协议 3.在R2上进行路由引入 4.在R2上进行路由过滤 5.在R4上进行路由过滤&#xff08;地址前缀列表&#xff09; 6.在R2 RIP进程上配置静默接口使RIP报文无法进入OSPF区域 实验拓扑 …

HCF-Net:用于红外小目标检测的分层上下文融合网络

摘要 红外小目标检测是一项重要的计算机视觉任务&#xff0c;涉及在红外图像中识别和定位微小物体&#xff0c;这些物体通常仅包含几个像素。然而&#xff0c;由于物体尺寸极小以及红外图像中通常复杂的背景&#xff0c;这项任务面临困难。在本文中&#xff0c;我们提出了一种…

贪吃蛇代码实现

一.基本信息 实现目标&#xff1a;使用C语言在Windows环境的控制台中实现贪吃蛇游戏 游戏运行&#xff1a; 地图绘制基本玩法提示信息游戏的开始与结束 基本玩法&#xff1a; 通过上下左右键控制蛇的移动蛇可以加速减速吃掉食物可以得分并增加蛇的长度可以自动暂停 游戏结…