IA32体系结构1(x86寄存器)

2024-02-21 23:32

本文主要是介绍IA32体系结构1(x86寄存器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Intel Architecture 32位处理器,主要以80386为参考。包括以下几类寄存器:

1.通用寄存器

2.段寄存器

3.状态和控制寄存器

4.指令指针寄存器EIP

5.内存管理寄存器

6.控制寄存器

通用寄存器


通用寄存器有8个,分别是EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。intel通用寄存器很少,比起ARM动不动30多个,要少很多,intel有个惯用做法,就是某些指令会假设对一些寄存器的使用。比如字符串指令,会隐式使用ECX、EDI、ESI里面的内容作为操作数。另外,通用寄存器可以拆分为字(16位)、字节(8位)使用,比如EAX可以使用字寄存器AX,字节寄存器AH、AL。这些通用寄存器的特殊隐式用途,列举如下:

(1)EAX-作为操作数和结果数据的累加器。

(2)EBX-指向DS段中的数据。

(3)ECX-字符串和循环操作的计数器。

(4)EDX-I/O指针。

(5)ESI-指向DS段寄存器指向的段中的数据;字符串操作的源指针。

(6)EDI-指向ES段寄存器指向的段中的数据;字符串操作的目的指针。

(7)ESP-堆栈指针(SS指向的段中)。

(8)EBP-指向栈中的数据(SS指向的段中),常用作基址指针寄存器。

段寄存器

段寄存器包括CS、DS、SS、ES、FS、GS,存放16位的段选择子。这些寄存器可以分成三类:代码、数据、堆栈。CS是代码段选择符。SS是堆栈段选择符,其它都是数据段选择符。CS段选择符不能显式加载,一般通过指令或者内部处理器操作隐式改变(比如过程调用、中断处理、任务切换),SS段选择符可以显式加载。32位保护模式下,段选择符里面存放指定格式的选择符,格式如下:

状态和控制寄存器

状态寄存器EFLAGS,包含一些状态标志、控制标志和系统标志。复位时,EFLAGS寄存器初值为0x00000002。

指令指针寄存器

指令指针寄存器EIP里面包含当前代码段的一个偏移(offset),指定下一条将被执行的指令。EIP寄存器不能被软件直接访问,需要通过控制转移指令隐式改变(JMP、Jcc、CALL、RET、中断、异常等)。

内存管理寄存器

内存管理寄存器包括GDTR、IDTR、TR、LDTR,用以指定段式内存管理相关数据结构的地址。这些寄存器的内容通过特定的指令来装载和获取。这些寄存器的存在,完全是为了加速GDT、IDT、TSS、LDT等表和数据结构的查找和加载。试想一下,没有这样的寄存器,查表将是一件多么费劲的事情,而且也没法做到硬件处理,做不到硬件处理,运行时地址转换就是不现实的事情了。操作这些寄存器的特定指令如下:

(1)GDTR-LGDT/SGDT

(2)IDTR-LIDT/SIDT

(3)TR-LTR/STR

(4)LDTR-LLDT/SLDT

控制寄存器

intel提供了CR0,CR1,CR2,CR3,CR4,用于操作处理器模式和当前执行任务的特性。

(1)CR0-包含系统控制标志,这些标志控制处理的操作模式和状态。

(2)CR1-保留

(3)CR2-包含页错误的线性地址

(4)CR3-包含页目录基地址,又叫做页目录基址寄存器(PDBR)

(5)CR4-包含一些标志,这些标志使能一些结构的扩展。

其中CR0的位0(PE)是保护模式使能位,该位只控制段级保护机制。CR0的31位(PG)是分页使能位,用于开启分页机制。

这篇关于IA32体系结构1(x86寄存器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/733441

相关文章

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

寄存器B

MCS-51单片机的中央处理器包含运算部件和控制部件两部分。         1. 运算部件         运算部件以算术逻辑运算单元ALU为核心,包含累加器ACC、B寄存器、暂存器、标志寄存器PSW等许多部件,它能实现算术运算、逻辑运算、位运算、数据传输等处理。         算术逻辑运算单元ALU是一个8位的运算器,它不仅可以完成8位二进制数据加、减、乘、除等基本的算

SylixOS x86平台C++符号表

1.C++跨平台问题说明     在x86平台下编译C++工程过程后,运行编译好的C++共享库时出现符号表__atomic_fetch_sub_4找不到的问题,如图 1.1所示。

【mysql 体系结构】了解MySQL体系结构

mysql 数据库体系结构图: MySQL 由以下几部分组成: 1、Connectors:不同语言中与 SQL 的交互 show VARIABLES like '%connection%' Variable_name Valuecharacter_set_connection utf8collation_connection utf8_general_ciext

士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

目录 前言: 士兰微电子介绍 士兰微 SC32F5432介绍 士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式 开漏输出模式 TTL输入模式 前言: 下面是对我在工作时公司所使用的一款国产芯片(士兰微 SC32F5432)开发过程所遇到的一些问题的记录与解决。 士兰微电子介绍 杭州士兰微电子股份有限公司(600460)坐落于杭州

JVM体系结构与内存模型

在分析JVM体系结构之前,先看下Dalvik-JVM和Java-DVM的区别: 1.DVM基于寄存器JVM基于内存 Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。   2.字节码区别 VM字节码由.class文件组成,每个文件一个class。JVM在运行的时候为每一个类装载字节码。相反的,Dalvik程序只包含一个.dex

笔记 14 : 彭老师课本第 8 章, UART : 寄存器介绍 ,

(99) 继续介绍 uart 的关于通道的 一整套 寄存器, UCON 等: ++ 接着介绍寄存器 UTRSTAT : ++ 接着介绍读写数据的寄存器: ++ 设置 uart 的波特率,有关的寄存器: ++ (100) (101) 谢谢

AUXR-特殊功能寄存器(只写)

AUXR : Auxiliary Register(只写) MnemonicAddbitB7B6B5B4B3B2B1B0Reset ValueAUXR8EHname -  -  - - - -EXTRAMALEOFFxxxx,xx00 禁止ALE信号输出(应用示例供参考,C语言):sfr AUXR = 0x8e; //声明AUXR寄存器的地址AUXR = 0x01;//ALEOFF位置1

ARM的体系结构

1、概念: ARM体系结构是由英国ARM公司设计的一种精简指令集(RISC)架构,它以其低功耗、高性能和低成本的特点,在嵌入式系统、移动设备、服务器等多个领域得到了广泛应用。ARM体系结构主要定义了处理器的指令集、寄存器结构、内存访问方式等关键元素。 2、指令集 ARM指令集:所有指令都占用32位存储空间,代码灵活度高,简化了解码复杂度。执行ARM指令集时,程序计数器(PC)的值每次自增4。