博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IA-32 保护模式 实模式
阅读量:5332 次
发布时间:2019-06-14

本文共 1124 字,大约阅读时间需要 3 分钟。

IA-32 CPU有三种模式:

其切换路径如下:

---引用自intel官方手册

1.实地址模式

处理器可以支持1MB的物理寻址空间。地址空间被划分为段,每个段(16 bits)最大长度为64KB;段的基址由16-bit段寄存器指定,16bit基址向左偏移,偏移位由0填充形成

20bit的段基址;

        base        1111 1111 1010 0000 0000

       offset      +       0000 0000 1010 1010

         ------------------------------------------

          =    1111 1111 1010 1010 1010

(1)可用的通用寄存器:

16 bits:AX, BX, CX, DX, SP, BP, SI, and DI

32 bits:(EAX, EBX, ECX, EDX, ESP, EBP, ESI, and EDI)

(2)段寄存器

CS、 DS、 SS、 ES (FS GS也可以指定使用):16bits

(3)16-bit IP寄存器:指令指针寄存器,是EIP的低16位

(4)16-bit FLAG寄存器:包含状态和控制标记;EFLAG低16位

(5)一个栈被用来处理call函数调用、中断、异常处理。

栈是由SS寄存器指定其地址,栈指针(SP)包含了一个相对于栈段的偏移值;

当call指令执行时,CPU讲CS、IP(EIP的低16位)压入栈,当ret指令执行时,弹出CS、IP;

当中断或者异常产生时,CPU push the EIP, CS, and EFLAGS (low-order 16-bits only)

registers进栈. 返回时,CPU从栈中弹出指令指针、CS和EFLAG 的保存值到 the EIP, CS, and
EFLAGS registers.

(6)单独的中断向量表(IVT)。中断向量表(每一个表项4字节)在实地址模式中用来处理中断、异常,而中断描述符表(IDT-每一个表项8bytes)被用在保护模式下;

2 保护模式

实模式和保护模式最大的区别在于,处理虚拟8086模式下的8086仿真器使用一些保护模式下的服务,比如保护模式下的中断、异常处理和页机制。

2.1 使能8086虚模式

只有当EFLAG中的VM标记被置位的时候处理器才能运行在虚模式下。只有一下两个条件才能触发:

a.处理器被切换到一个新的处于保护模式下的任务时

b.通过iret指令返回(一个虚模式的任务:可以理解为从实模式下返回成虚模式)

2.2 分页机制

见下篇

 

转载于:https://www.cnblogs.com/qianzhilan/p/5699367.html

你可能感兴趣的文章
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
Windows Phone开发(5):室内装修 转:http://blog.csdn.net/tcjiaan/article/details/7269014
查看>>
详谈js面向对象 javascript oop,持续更新
查看>>
关于这次软件以及pda终端的培训
查看>>
jQuery上传插件Uploadify 3.2在.NET下的详细例子
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>