保护模式下的段寄存器 由 16位的选择器 与 64位的段描述符寄存器 构成段描述符寄存器: 存储段描述符选择器:存储段描述符的索引PS:原先实模式下的各个段寄存器作为保护模式下的段选择器,80486中有6个(即CS,SS,DS,ES,FS,GS)80位的段寄存器,同时提供6个段左右机器当前运行的地址...
分类:
其他好文 时间:
2014-08-17 17:00:22
阅读次数:
224
bootsect部分已经执行完成,程序也跳转到setup部分:
start:
! ok, the read went well so we get current cursor position and save it for
! posterity.
mov ax,#INITSEG ! this is done in bootsect already, but...
mov...
分类:
系统相关 时间:
2014-07-03 18:38:19
阅读次数:
329
x86系列CPU可以在16位实模式和32位保护模式下运行,实模式的特点是地址总线只有20位,也就是只有1MB的寻址空间,为了兼容老的CPU,Intel x86系列CPU包括最新的CPU在上电时都运行在16位的实模式下,同时在硬件上强行将CS置成0xF000,IP置成0xFFF0,那么CS:IP就指向0xFFFF0这个地址,也就是上电瞬间代码从该处开始执行,而BIOS恰恰就存储在这个地方,可以想象一...
分类:
系统相关 时间:
2014-06-30 17:49:55
阅读次数:
290
在BIOS触发0x19中断将磁盘的第一个扇区(512B)加载到内存中后,计算机才真正开始执行磁盘上的程序。而这512B的程序bootsect.s中的第一批代码,此时处理器还处于实模式内存寻址的最大范围是1M(0x0000-0xFFFF),接下来我们看看在bootsect.s的第一批代码中做了些什么?...
分类:
系统相关 时间:
2014-06-24 19:09:03
阅读次数:
291
一、逻辑地址(有时也称虚拟地址) 逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如在C语言指针编程中,可以读取指针变量本身值(&操作)实际上这个值就是逻辑地址,它是相对于当前进程数据段的地址和绝对物理地址无关。 只有在Intel处理器的实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,CPU不进行自动地址转换)。逻辑地址也就是在Intel...
分类:
其他好文 时间:
2014-06-18 07:16:45
阅读次数:
202
在ia32下,cpu有两种工作模式:实模式和保护模式。在实模式下,16位的寄存器用“段+偏移”的方法计算有效地址。段寄存器始终是16位的。在实模式下,段值xxxxh表示的以xxxx0h开始的一段内存。但在保护模式下,段寄存器的值变成了一个索引(还有附加信息)这个索引指向了一个数据结构的表(gdt/....
分类:
其他好文 时间:
2014-05-28 01:36:29
阅读次数:
417
设计模式介绍模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这是关于模式最经典的定义,作者是建筑大师Christopher
Alexander。如果是第一次看到这句话,多数人会觉得有些抽象难懂。其实“模式”两个字只是一个代号,就像我叫Justin,如果我改叫Tom...
分类:
其他好文 时间:
2014-05-12 04:12:33
阅读次数:
381
从开机加电到实行main函数之前的过程分为三步,目的是实现从启动盘加载操作系统程序,完成实现main函数的准备工作启动BLOS,准备是模式下的中断向量表和中断服务程序从启动盘加载操作系统程序到内存。加载操作系统程序就是靠第一步实现的为实现32位的main函数做过度工作1.1启动blos,准备实模式下...
分类:
系统相关 时间:
2014-05-06 00:41:20
阅读次数:
375
在实模式下寻址的时候,”段寄存器+偏移地址”进过转换计算以后得到的地址是“物理地址”,也就是在物理内存中的实际地址,而在保护模式下,“段选择器+偏移地址”转换后的地址被称为“线性地址”而不是“物理地址”,那么线性地址就是物理地址吗?
答案可能是,也可能不是,这取决于80386的内存分页机制是否被使用。
为什么有内存分页机制?
我们回顾一下,单任务的DOS系统中,一个应用程序可以使用所有的空闲...
分类:
其他好文 时间:
2014-05-03 20:56:39
阅读次数:
368
一直有看linux内核的冲动,内核有些部分是汇编编写的,无奈汇编不大懂,所以利用五一三天假期大概走了一边8086CPU架构的汇编,8086CPU还是16位的,我们现在都进入64位时代了,这两者之间有很大的区别,但是看看16位的CPU汇编还是很重要的,这有助于理解32位的80386CPU。这篇文章来分析下80386的内存管理的一些基础知识,包括实模式、保护模式和内存寻址等等。
1.实模式...
分类:
其他好文 时间:
2014-05-03 20:50:08
阅读次数:
410