01 【哈工大_操作系统】x86_64 常用寄存器大全
创作时间:
作者:
@小白创作中心
01 【哈工大_操作系统】x86_64 常用寄存器大全
引用
CSDN
1.
https://blog.csdn.net/weixin_53159274/article/details/138074386
在学习CPU底层技术的时候,难免会接触到各式各样的寄存器。尤其是在使用汇编语言编写操作系统时,寄存器更是必不可少的。本文将详细介绍x86_64架构中的所有寄存器,按照从常用到不常用的顺序进行介绍。
什么是寄存器?
寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息。
从操作系统使用的角度出发,按照寄存器类型,可以分成如下几类:
16_bits_:
数据寄存器(可拆为两个独立的 8_bits_ 寄存器)
段寄存器
变址寄存器
指针寄存器
32_bits_:
通用寄存器
控制寄存器
...
一、16bits(实模式)
8086 CPU 中寄存器总共为14个 16bits寄存器。
数据寄存器
寄存器 | 用途 |
|---|---|
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
,则不跳转。
二、32bits(保护模式)
32bits寄存器与 16bits寄存器一样,同样可以分为数据寄存器、变址寄存器、指针寄存器、控制寄存器,我们不再一一分类,将其归纳如下所示。
通用寄存器
寄存器 | 用途 |
|---|---|
EAX | 累加寄存器,通常作为用来执行加法 |
EBX | 基地址寄存器,通常用于数据存取 |
ECX | 计数器寄存器,通常用作计数器 |
EDX | 数据寄存器,通常用来存储临时数据 |
ESP | 栈顶指针,指向栈的顶部 |
EBP | 栈底指针,指向栈的底部,通常用ebp+偏移量的形式来定位函数存放在栈中的局部变量 |
ESI | 源地址寄存器,通常作为串操作中的源地址 |
EDI | 目的地址寄存器,通常作为串操作中的目的地址 |
EIP | 指令指针寄存器通常与代码段寄存器CS组合为CS:IP作为代码段地址,指向下一条要执行的指令地址 |
EFLAGS | 标志寄存器,记录CPU执行过程中的一系列状态,如下图所示 |
本文目前只更新了李治军老师【操作系统】课程中常用的寄存器,包括16位的和32位的,一些尚未使用到的还未更新,具体可以参考
《Linux内核完全注释(修正版v3.0).pdf》第四章
,这一章详细介绍了 80x86 系统寄存器大全。
待更新…后续将继续更新【操作系统】课程中所使用到的寄存器
本文原文来自CSDN
热门推荐
如何在不影响运营的情况下实现业务技术升级
业务团队与技术如何搭配
新福克斯高速行驶表现怎样?如何提升高速行驶的安全性?
暖住了!五台山的小狗在沈阳安了家!“原来狗狗幸福的样子真的藏不住”
中性粒细胞百分比偏低是什么意思
C语言浮点型和整型如何比较大小
口腔内窥镜检查详解:原理、过程及注意事项
项目管理软技能怎么上
氮化硼(BN)在3D打印中的潜在应用及相关研究
汽车中常见的焊接工艺大全
运动后腿酸痛是怎么回事
发Offer用A公司,签合同用B公司?资深HR揭秘用工合规的三大法律红线
内心强大前提:认识自己,识别你的情绪,避免坏情绪吞噬你的心力
后端方案设计文档结构模板参考
全差分放大器应用实例剖析:从设计到应用的全过程详解
差分放大电路对共模/差模信号有何影响?原理是什么?
QCC活动第四步:设定目标的技巧与注意事项
长期咳嗽、咳痰、呼吸困难,需警惕慢阻肺
玻璃体浑浊做什么检查能看出来
乐山大佛什么时候建造的?穿越千年,一窥乐山大佛的传奇历程!
自媒体内容审核工作,如何确保信息真实性与合规性?
高考临近,考前该如何合理搭配,均衡饮食?营养专家来支招
国潮文化探秘
“国潮文化创新与发展行动共识”发布 推动国潮文化在世界舞台绽放光彩
电机设计与效率提升——寻找变革性的电机驱动技术
电机性能的特性曲线,详解电机性能曲线及其特点
新闻资讯:定义、内容与自媒体时代的传播变革
解压文件解压不了怎么办
让体育运动惠及每一名学生
白色车牌的含义是什么?