80386的各种寄存器一览

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。

此书已经开源,阅读地址 http://www.kerneltravel.net

1、通用寄存器(32位)

• EAX:一般用作累加器

• EBX:一般用作基址寄存器(Base)

• ECX:一般用来计数(Count)

• EDX:一般用来存放数据(Data)

• ESP:一般用作堆栈指针(Stack Pointer)

• EBP:一般用作基址指针(Base Pointer)

• ESI:一般用作源变址(Source Index)

• EDI:一般用作目标变址(Destinatin Index)

2、段寄存器(16位)

• CS:代码段寄存器

• DS:数据段寄存器

• SS:堆栈段寄存器

• ES、FS 及GS:附加数据段寄存器

这些段寄存器中存放的不再是某个段的基地址,而是某个段的选择符(Selector)。因为16 位的寄存器无法存放32 位的段基地址,段基地址只好存放在段的描述符(Descriptor)中。

3、标志和控制寄存器(32位)

标志寄存器 EFLAGS

指令指针 EIP

机器状态字 CR0

Intel 预留 CR1

页故障地址 CR2

页目录地址 CR3

指令指针寄存器(EIP)中存放下一条将要执行指令的偏移量(offset ),这个偏移量是相对于目前正在运行的代码段寄存器(CS)而言的。偏移量加上当前代码段的基地址,就形成了下一条指令的地址。

4、系统地址寄存器

• 全局描述符表寄存器GDTR(Global Descriptor Table Register ),是48 位寄存器,用来保存全局描述符表(GDT)的32 位基地址和GDT 的大小(16位)。

• 中断描述符表寄存器IDTR(Interrupt Descriptor Table Register),是48 位寄存器,用来保存中断描述符表(IDT)的32 位基地址和IDT 的大小(16位)。

• 局部描述符表寄存器LDTR(Local Descriptor Table Register ),是16 位寄存器,保存局部描述符表LDT 段的选择符。

• 任务状态寄存器TR(Task State Register)是16 位寄存器,用于保存任务状态段TSS 段的16 位选择符。

5、调试寄存器和测试寄存器(32位)

80386 有两个32 位的测试寄存器TR6 和TR7。TR6 是测试命令寄存器,其内存放测试控制命令。TR7 是数据寄存器,其内保存转换旁路缓冲器测试的数据。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

Universal-Image-Loader源码分析,及常用的缓存策略

讲到图片请求,主要涉及到网络请求,内存缓存,硬盘缓存等原理和4大引用的问题,概括起来主要有以下几个内容: 原理示意图     主体有三个,分别是UI,缓存模...

1929
来自专栏大数据

Zzreal的大数据笔记-SparkDay04

Spark SQL SparkSQL的前身是Shark,它抛弃原有Shark的代码,汲取了Shark的一些优点,如内存列存储(In-Memory Columna...

1829
来自专栏祝威廉

ElasticSearch Recovery 分析

org.elasticsearch.indices.cluster.IndicesClusterStateService.clusterChanged 被触发后...

1003
来自专栏Fish

《深入理解Spark-核心思想与源码分析》读书笔记(1)

前两章 第一章主要是讲如何安装和配置spark,以及如何导入spark源码调试运行;第二章主要讲的是上次那本书《Spark快速大数据分析》的内容,科普一下spa...

25410
来自专栏linux驱动个人学习

Intel P4 CPU

1443
来自专栏CDA数据分析师

专栏 | Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =。以后还是要按时完成任务。废话不多说,第四章-第六章主要讲了三个内容:键值对、数据读取与保存与Spa...

1899
来自专栏码匠的流水账

高性能SPSC无锁队列设计之路

本文整理了Single Producer/Consumer lock free Queue step by step这篇文章里头关于高性能的SPSC无锁队列使用...

1002
来自专栏涂小刚的专栏

从 PageRank Example 谈 Spark 应用程序调优

在做PageRank测试时,发现有很多有趣的调优点,想到这些调优点可能对用户来说是普遍有效的,现把它整理出来一一分析,以供大家参考。

9063
来自专栏禁心尽力

Redis的二八定律

常用命令: 1、setex key 有效时间 value ----------意思就是添加并设置该键值对的存活时间 2、mset key1 value1 key...

2786
来自专栏开发与安全

80386的分段机制、分页机制和物理地址的形成

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了...

2225

扫码关注云+社区