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.hqwc.cn/news/640150.html

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

相关文章

出海企业必备:Zoho Desk打造高效海外工单管理体系!

出海工单系统和常见的工单系统相比有什么不同呢&#xff1f;工单系统主要事帮助售前或者售后人员记录、处理、跟踪客户需求&#xff0c;不仅有利于企业内部管理的规范化&#xff0c;还能够有效提高客户服务质量。 工单系统可以帮助出海企业搭建统一的订单管理、售后服务、甚至…

轮转数组(Leedcode)的题目

题目&#xff1a;给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步…

sql(ctfhub)

一.整数型注入 输入1 输入2 输入2-1&#xff0c;回显为1的结果&#xff0c;说明是数字型&#xff0c;只有数字型才可加减 判断字段数为2 查询数据库 查表 查列 显示flag内容 二.字符型注入 输入1 输入2 输入2-1&#xff0c;说明为字符型&#xff0c;不是数字型 判断闭合方式为…

一款支持串口、网口自定义协议的调试软件

ComMax通讯调试软件是一款支持自定义串口&#xff0c;网口通讯协议的调试软件&#xff0c;用户可以根据需要&#xff0c;自定义协议包&#xff0c;然后根据接受的数据选择要发送的数据包。是一款强大、好用的调试软件。 点击下载 提取码&#xff1a;wmfg 不用安装 下载解压即…

纠正对CAN的错误认识

STM32CUBEMX系列——CAN通讯的配置_stm32cubemx 配置103 can-CSDN博客 STM32之CAN通信_stm32 can通信-CSDN博客 在回环模式下&#xff0c;发送的数据帧会在控制器内部被立即接收&#xff0c;而不会通过总线传播到其他节点。这种模式可以确保在没有其他节点干扰的情况下&#…

插值与重采样在AI去衣技术中的关键作用

在人工智能&#xff08;AI&#xff09;的众多应用中&#xff0c;去衣技术作为一种新兴的图像处理技术&#xff0c;逐渐引起了广泛关注。这项技术不仅涉及复杂的计算机视觉和深度学习算法&#xff0c;还需要对图像处理中的插值与重采样技术有深入的理解。本文将详细探讨插值与重…

MySQL基础之单表操作(定义DDL,增删改DML,查DQL)

目录 一、概述1.1 什么是数据库1.2 连接MySQL1.3 数据模型1.4 SQL语句的分类1.5 数据类型 二、数据库设计-DDL2.1 数据库层面2.2 数据表层面创建表约束查询修改add,modify,change,drop,rename删除 三、数据库操作-DML3.1 添加数据insert3.2 修改数据update3.3 删除数据delete 四…

Learn ComputeShader 02 Multiple kernels

前面已经成功创建了第一个compute shader&#xff0c;并且使用它替换掉quad的材质的纹理&#xff0c;现在我们将要在计算着色器中创建多个kernel。 首先调整上次的计算着色器&#xff0c;让它显示为红色。 然后再次创建一个kernel&#xff0c;显示为黄色。 结果应该是这样的…

10.Godot Input与自定义单例的使用

单例 单例是一个可以在任何一个脚本中对其进行直接访问的对象&#xff0c;分为内置单例与自定义单例。每个单例都是独一无二的对象。内置单例不是节点&#xff0c;主要成员是各类 Server&#xff0c;开发者可以使用它们直接控制游戏程序的图形与音效等内容。此外&#xff0c;还…

Leetcode 86. 分隔链表

题目链接&#xff1a; 86. 分隔链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/partition-list/description/ 题目&#xff1a; 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出…

Rumble Club上线时间+配置要求+游戏价格+加速器推荐

Rumble Club上线时间配置要求游戏价格加速器推荐 Rumble Club是一款基于物理的玩家大乱斗游戏&#xff0c;该作拥有丰富饱满的视觉效果和趣味性十足的游玩极致&#xff0c;让玩家可以各种富有想象力的方式&#xff0c;推搡、戏耍好友。该作即将正式上线&#xff0c;为了避免玩…

500道Python毕业设计题目推荐,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…