实模式下的影子寄存器

先说实模式,这是x86开机时所处的模式。仿佛cpu仍旧是80x86时代。

然后是unreal模式,其实叫做far real mode更形象,就是,仍旧是在16位模式下,但是可以访问1M以上的地址。

这个模式是通过先进入保护模式,通过修改段寄存器,把它的影子寄存器的limit修改成4G来做到的。然后回到16位模式,这样就可以访问远地址了。

x86 cpu并不使用段寄存器,它总是从影子寄存器里读数据。

而实模式下修改段寄存器,cpu只是间接的把影子寄存器里base字段修改成seg<<4。

参考:

Segment size in x86 real mode

Peter Cordes 的回答

原文地址:https://www.cnblogs.com/xiang-yin/p/12149076.html

时间: 2024-11-09 04:02:01

实模式下的影子寄存器的相关文章

实模式下地址的计算

实模式下,寄存器为16位,为了能够访问1MB的内存空间,一般使用两个16位寄存器进行地址生成,一个寄存器内装入段地址(该寄存器叫做段寄存器),一个装入偏移地址.其真实物理地址的计算公式为: 物理地址=段地址*16+偏移地址 即将段地址左移4位,然后和偏移地址相加,即得到真实物理地址. 然而,当我们得到一个真实物理地址时,如何计算段地址和逻辑地址呢? 假设得到一个5位数的物理地址,例如0x10fff,我们可将其放在两个寄存器中,第一个寄存器为0x0001,第二个寄存器为0x0fff,则是需要将第一

IA-32 保护模式下寄存器一览

最近在看张银奎先生的<调试软件>一书,想将关键的技术记录下来,以便日后查阅,也分享给想看之人吧. 1 通用寄存器 EAX,EBX,ECX,EDX:用于运算的通用寄存器,可以使用AX,BX等16位或AL,AH等8位短寄存器,访问长寄存器的相应地址 ESP,EBP:Extended Stack/Base Pointer,指栈顶和当前栈的起始地址 ESI,EDI:源和目标寄存器,比如在循环操作中,与ECX组合,分别表示计数器(ECX),起始数(ESI),目标数(EDI) 64位扩展通用寄存器:RAX

Linux下的实模式和保护模式

实模式:(即实地址访问模式)它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式.实模式被特殊定义为20位地址内存可访问空间上,这就意味着它的容量是2的20次幂(1M)的可访问内存空间(物理内存和BIOS-ROM),软件可通过这些地址直接访问BIOS程序和外围硬件.实模式下处理器没有硬件级的内存保护概念和多道任务的工作模式.但是为了向下兼容,所以80286及以后的x86系列兼容处理器仍然是开机启动时工作在实模式下.80186和早期的

第12课 - 实模式到保护模式(下)

不一般的jmp(s16->s32) 在16位代码中,所有的立即数默认为16位 从16位代码段跳转到32位代码段时,必须做强制转换 深入保护模式:定义显存段 为了显示数据,必须存在两大硬件:显卡 + 显示器 显卡 为显示器提供需要显示的数据 控制显示器的模式和状态 显示器 将目标数据以可见的方式呈现在屏幕上 显存的概念和意义 显卡拥有自己内部的数据存储器,简称显存 显卡的工作模式:文本模式&图形模式 在不同的模式下,显卡对显存内容的解释是不同的 可以使用专属指令或int 0x10中断改变显卡工

实模式与保护模式下的分段分页机制

1. 实模式 在实模式下,CPU不会为任务提供任务的保护机制,代码任意运行.8086处理器是学习实模式的常用例子.它内部大致有以下寄存器: 8个16位的通用寄存器: AX (可以拆分成两个AH/AL的8位寄存器) BX (BH,BL) CX (CH,CL) DX (DH,DL) SI (source index, 源索引寄存器) DI (destination index, 目的索引寄存器) BP (base pointer, 基数指针寄存器) SP (stack pointer, 堆栈指针寄存

0.11之路(四):从实模式到保护模式

(一)关中断并将system移动到内存地址起始位置 0x00000 将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0.这样系统不会再响应中断,直到main函数中能够适应保护模式的中断服务体系重建完毕才会打开,那时候响应中断的服务程序将不再是BIOS提供的中断服务程序,而是系统自身提供的. 就是要完成实模式下的中断向量表和保护模式下的中断描述符表(IDT)的交接工作.借助关中断(cli)和开中断(sti)完成这个过程的创建,即在创建过程中不能去响应中断,否则没有对应的中断程序,系统

CPU 实模式 保护模式 和虚拟8086模式

从80386开始,CPU有三种工作方式:实模式,保护模式和虚拟8086模式.只有在刚刚启动的时候是real-mode,等到操作系统运行起来以后就切换到protected-mode.实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存.在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不仅为存储器共享和保护提供了硬件支持,而且为实现虚拟存储器提供了硬件支持; 支持多任务,能够快速地进行任务

实模式_0

实模式是一种简单的16位模式,存在于所有x86处理器上. Real Mode是第一个x86模式设计,在保护模式诞生之前被许多早期的操作系统使用. 出于兼容性目的,所有x86处理器都以实模式开始执行. 所有现代操作系统(Windows,Linux,...)都运行在保护模式,由于Real模式提供的许多限制和问题(请参见下面的实模式操作系统警告页面).较旧的操作系统(如DOS)和程序以实模式运行,因为它是当时唯一可用的模式.有关如何从实模式切换到保护模式的信息,请参阅相应的文章. 注意:有一种称为虚拟

【OS】实模式和保护模式区别及寻址方式

实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感悟能力实在太差,在很长一段时间里都没真正的明白它们的内含,更别说为什么实模式下最大寻址空间为1MB?段的最大长度不超过64KB?而保护模式下为啥最大寻址能力就变成了64TB?每个段最大也达4GB? 更甚者分段和分页这两个高深的概念像我这种菜鸟怎么也理解不了啊!