- 和往常一样,即使在32位模式下,EIP寄存器也只有处理器内部使用,程序中是无法直接访问的,对IP和EIP的修改通常是某些指令隐式执行的,这些指令包括JMP,CALL,RET,IRET等
- 在16位处理器中,标志寄存器FALGS是16位的,在32位处理器中,扩展到了32位,低16位和原先保持一致
- 在16位模式下,一个程序可以自由地访问不属于它的内存位置,甚至可以对那些地方的内容进行修改。这当然是不安全的,也不合法,但却没有任何机制来限制这种行为。在32位模式下,处理器要求在加载程序时,先定义该程序所拥有的段,然后允许使用这些段,定义段时,除了基地址(起始地址)外,还附加了段界限,特权级别,类型等属性。当程序访问一个段时,处理器将用固件实施各种检查工作,以防止对内存的违规访问
- 在32位模式下,传统的寄存器,如CS,SS,DS,ES保存的不再是16位段基址,而是段的选择子(16位),即用于选择要访问的段,真正的段地址位于段寄存器的描述符高速缓存中。每个寄存器还包括一个不可见部分,称为描述符高速缓存器,里面有段的基址和各种访问属性,这部分内容程序不可访问,由处理器自动处理
- 32位处理器增加了两个额外的段寄存器FS和GS
- 80386及之后的32位处理器,都兼容实模式,可以运行实模式下的8086程序,而且,在刚加电时,这些处理器都自动处于实模式下,此时,它相当于一个非常快速的8086处理器,只有在进行一番设置之后,才能运行在保护模式下
- 在保护模式下,所有的32位处理器都可以访问多达4GB的内存,它们可以工作在分段模型下,每个段的基地址是32位的,段内偏移量也是32位的,因此,段的长度不受限制。在最典型的情况下,可以将整个4GB的内存定义成一个段来处理,这就是所谓的平坦模式
- 传统上,段地址和偏移地址称为逻辑地址,偏移地址叫做有效地址,有效地址经过段部件产生的地址称为线性地址,线性地址经过页部件转换后得到物理地址
- 线性地址的概念用来描述任务的地址空间,IA-32处理器上的每个任务都拥有4GB的虚拟内存空间,这是一段长4GB的平坦空间,就像一段平直的线段,因此叫做线性地址空间
- 为了提高处理器的执行效率和速度,可以把一条指令的执行过程分解为若干个细小的步骤,并分配给相应的单元来完成(比如一条指令的执行过程分为取指令,译码和执行三个步骤),各个单元的执行是独立的,并行的 (原子操作指令就是不能再细分?)。如此一来,各个步骤的执行在时间上就会重叠起来,这种执行指令的方法就是流水线技术
从实模式到保护模式-第10章
最新推荐文章于 2023-03-13 18:11:41 发布