微机技术3版PPT第13章10 7版33_第1页
微机技术3版PPT第13章10 7版33_第2页
微机技术3版PPT第13章10 7版33_第3页
微机技术3版PPT第13章10 7版33_第4页
微机技术3版PPT第13章10 7版33_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020/6/7,上海交通大学,1,面向21世纪课程教材普通高等教育“十一五”国家级规划教材,微型计算机技术WeixinJisunjiJishu(第3版)孙德文编著,2020/6/7,上海交通大学,2,第13章32位微处理器的软件特点,2020/6/7,上海交通大学,3,32位微处理器的软件特点,13.132位微处理器的存储器管理13.1.180386的工作方式13.1.2保护方式下的存储管理13.232位指令的寻址方式的特点13.2.1数据的寻址方式13.2.2转移地址的寻址方式13.3保护方式下的寻址方式13.3.1描述子和选择子13.3.2保护方式下的存储器寻址过程简介13.3.3保护方式下的存储器寻址过程举例,2020/6/7,上海交通大学,4,32位微处理器的软件特点,13.432位微处理器指令系统简介13.4.1实方式下的32位微处理器指令系统13.4.2位微处理器扩充指令13.4.3高级指令和保护控制指令13.4.480386新增加的指令13.4.580486新增加的指令13.4.6Pentium处理器新增加的指令,2020/6/7,上海交通大学,5,13.132位微处理器的存储器管理,13.1.180386的工作方式13.1.2保护方式下的存储管理,2020/6/7,上海交通大学,6,13.1.1的工作方式,有种工作方式实方式保护方式虚拟方式,2020/6/7,上海交通大学,7,1.实方式,又称实地址方式。系统启动后,自动进入实方式,采用类似的体系结构。在实方式下的工作原理和的相同,主要差别是可以处理位的数据,如进行位的寄存器运算以及偏移地址在KB以内的位的数据传送。另外,在实方式下新增加的两个段寄存器FS和GS是可用的。实方式是在复位后立即出现的工作方式,即使是想让系统运行在保护方式,启动程序(系统初始化或引导)也需要在实方式中运行,以便初始化保护方式。,2020/6/7,上海交通大学,8,实方式的主要特点,寻址方式、存储器管理、中断处理同。操作数默认为位,允许访问位寄存器。不使用虚拟存储器,最大地址范围仍为MB,只采用分段部件,每段最大为KB。存储器中保留个固定的区域初始化程序区FFFFFHFFFFH和中断向量表FFHH。指令集中的绝大多数指令可以运行。,2020/6/7,上海交通大学,9,2.保护方式,又称虚方式或虚地址方式。“保护”是指在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,以保证每个任务顺利地执行。系统启动后先进入实方式,在CR的PE位为1时,完成系统初始化后,立即转入保护方式。这种方式提供了多任务环境下的各种复杂功能以及对复杂存储器组织的管理机制。这是最常用的方式,只有在此方式下,才能发挥其固有的强大功能。,2020/6/7,上海交通大学,10,保护方式,在保护方式下可以访问GB的物理存储空间,段的长度在启动页功能时是GB,不启动页功能时是MB。页功能是可选的。在这种方式下,可以引入虚拟存储器的概念,以扩充软件占用的存储空间。保护方式是支持多任务的方式,提供了一系列的保护机制任务地址空间的分离、共个特权级、有特权指令、段和页的访问权限(如只读、只执行)和段限检查。,2020/6/7,上海交通大学,11,保护方式的主要特点,采用虚拟地址空间、线性地址空间和物理地址空间来描述存储器;通过描述子、选择子的数据结构来实现对内存的访问。强大的寻址空间。每个任务的最大虚拟地址空间可达TB。使用级保护功能,可实现程序与程序、用户与用户、用户与OS之间的隔离和保护,为多任务OS提供优化支持。既可进行位运算,又可进行位运算,只要在保护方式,就能启动其分页单元,以支持虚拟内存。,2020/6/7,上海交通大学,12,3.虚拟方式,虚拟方式(又称V方式)是既有保护功能又能执行代码的工作方式,是一种动态方式。在这种方式中,能够迅速、反复地进行虚拟方式和保护方式之间的切换,即从保护方式进入虚拟方式执行程序,然后离开虚拟方式,进入保护方式继续执行固有的程序。,2020/6/7,上海交通大学,13,虚拟方式,“虚拟”是指一个多任务的环境,即模拟多个的工作方式,在此方式下,被模拟成多个处理器并行工作。虚拟方式允许将内存划分成若干部分,每一个部分由OS分配给不同的应用程序,而应用程序、数据以及内存管理程序等部分则存放在所分配的内存中。因此OS可根据“时间上的平均分配”或“优先级”,分配每个应用程序的执行时间。,2020/6/7,上海交通大学,14,虚拟方式的主要特点,可执行原来采用书写的应用程序。段寄存器的用法同实方式。可采用分页方式,将内存以KB为单位进行划分,KB为一“页”,比分段划分要细,从而可以处理较小的应用程序和数据段。应用程序在最低特权的段上运行,指令系统中的特权指令不能使用。,2020/6/7,上海交通大学,15,虚拟方式,虚拟方式下线性地址是位,即MB空间。但由于线性地址可以通过页表映射到任何位物理地址,所以应用程序可在现有实际内存的任何地方执行。在多任务系统中,可以使其中一个或几个任务使用虚拟方式,此时,一个任务所用的全部页面可以定位于某个物理地址空间,另一个任务的页面可以定位于其他区域,即每个虚拟方式下的任务可以转换到物理存储器的不同位置,这样把存储器虚拟化了,故称为虚拟方式。,2020/6/7,上海交通大学,16,4.实方式与虚拟方式的主要区别,这是两种类似的工作方式。实方式的内存管理只采用分段,虚拟方式既采用分段又采用分页。实方式的最大寻址空间为MB。虚拟方式每个任务可在整个内存空间寻址,即MB的寻址空间可在整个存储器范围移动。虚拟方式的实际寻址空间为GB。,2020/6/7,上海交通大学,17,实方式与虚拟方式的主要区别,实方式下微处理器的所有保护机制都不起作用。不支持多任务。虚拟方式既可运行程序,又支持多任务操作。虚拟方式可以是保护方式中多任务操作的一个任务。实方式总是针对整个系统的。,2020/6/7,上海交通大学,18,的三种工作方式之间的转换,2020/6/7,上海交通大学,19,13.1.2保护方式下的存储管理,存储管理包含两大机制,一是地址转换机制,二是保护机制。地址转换机制使操作系统可以灵活地把存储区域分配给各个任务,而保护机制用来避免系统中的一个任务越权访问属于另一个任务的存储区域或属于操作系统的存储区域。虚拟地址空间可达TB,用户在程序中所使用的地址都是由“段选择子”和“偏移量”两部分组成的虚拟地址。,2020/6/7,上海交通大学,20,1.地址转换机制,以上的位微处理器有三种存储器地址空间虚拟地址(逻辑地址)、线性地址和物理地址。位微处理器工作在保护方式时,线性地址的地址空间可达GB,物理地址空间与线性地址空间相同,而虚拟地址空间可达TB。用户在程序中所使用的地址都是由“段选择子”和“偏移量”两部分组成的虚拟地址,程序在系统中运行时,由存储管理机制把虚拟地址转换成物理地址。,2020/6/7,上海交通大学,21,地址转换机制,在以上的位微处理器中集成有MMU(存储管理部件),这一MMU采用了分段机制和分页机制以实现两级“虚拟地址物理地址”的转换,如图13-2所示。,2020/6/7,上海交通大学,22,图-两级“虚拟地址物理地址”的转换,2020/6/7,上海交通大学,23,地址转换机制,分段机制实现虚拟地址到线性地址的转换,它把用户程序中的TB的虚拟地址空间分成GB大小不等的存储分段,并且有实施段间隔离与保护的硬件机构。分段存储管理直接支持高级语言的模块化程序设计技术,有效地简化了操作系统的段式存储管理和模块重定位的软件模块的设计。,2020/6/7,上海交通大学,24,地址转换机制,分页机制实现了线性地址到物理地址的转换,它把用户的线性地址空间等分为固定大小的块,每一线性地址块称为页,线性地址以“页号页内地址对”表示。系统也把存储器物理空间等分成同样大小、位置固定的块,每一物理存储块称为页帧(MMU的分页机制将KB大小的页称为页帧)。存储空间的物理地址也以“页帧号页内地址对”表示。,2020/6/7,上海交通大学,25,地址转换机制,为实现页面管理,系统为每个作业建立一张页面对照表页表,页表内记录了每个线性地址块的页号和为其分配的物理存储块的页帧号,操作系统页表实施线性地址到物理地址的映射。位微处理器MMU的分页存储管理使用二级页表变换技术,并在芯片内集成有一个TLB(转换后备缓冲器),这是一个路组相连高速缓冲存储器,其间保存了个最近使用的物理页的页表项。这种分页存储管理机制有效地加速了从线性地址到物理地址的转换过程外,这一机制还具有页级的违章和保护作用,从而可以有效地简化操作系统的页面存储管理软件模块的设计。,2020/6/7,上海交通大学,26,地址转换机制,位微处理器的分页机制和分段机制都使用驻留在存储器中的各种表格,规定各自的转换函数,这些表格具有彼此独立的表结构,段表存储在线性地址空间,而页表存储在物理地址空间。必须指出的是,这些存储在存储器中的表格只允许由操作系统进行访问,应用程序不能对其进行修改。操作系统为每一任务维护一个不同的转换表格集,使每个任务可使用的地址跨越整个虚拟地址空间。这样不仅使每个任务具有不同的虚拟地间,并且使任务之间可以彼此隔离。,2020/6/7,上海交通大学,27,2.保护机制,以上的位微处理器支持两个主要的保护机制:一个是通过给每个任务分配不同的虚拟地址空间,使任务之间完全隔离,每个任务有不同的“虚拟地址物理地址”的转换映射;另一个是任务内的保护机制操作,保护操作系统存储段及特别的处理器寄存器,使其不能被其他应用程序破坏。,2020/6/7,上海交通大学,28,保护机制,在存储器的虚拟地址空间中仅由一个任务占有的虚拟地址空间部分,即不被其他任务共享的虚拟地址部分,称为局部地址空间。局部地址空间包含的代码和数据是任务私有的,需要与系统中的其他任务相隔离。而各个任务公用的一部分虚拟地址空间称为全局地址空间,操作系统存储在全局地址空间中,以使操作系统为所有任务所共享,并且每一任务可以对其进行访问,既保护了操作系统,又使其不被应用程序破坏。,2020/6/7,上海交通大学,29,保护机制,位微处理器支持级保护的特权级(PrivilegeLevel),如图-所示。特权级标号为,其中,级为最高特权级,处于最内层,级为最低特权级,处于最外层。每个存储段都与一个特权级相联系,只有足够级别的程序才可对相应的段进行访问。在运行程序时,微处理器是从CS寄存器寻址的段中取出指令并执行指令的,当前活跃代码段的特权级称为当前特权级(CurrentPrivilegeLevel,CPL),CPL确定哪些段可由程序访问。处理器的保护机制规定,对给定CPL的执行程序,只允许访问同一级别或外层级别的数据段,若试图访问内层级别的数据段则属于非法操作,将产生一个异常,向操作系统报告这一违反特权规则的操作。,2020/6/7,上海交通大学,30,图-特权级层次结构,2020/6/7,上海交通大学,31,保护机制,特权级的典型用法是,将操作系统核心放在级,将操作系统的其余部分放在级:将系统服务程序放在级,将应用系统服务程序(OS扩展)中间软件级放在级,将应用程序放在级。这样,一个任务的操作系统程序、中断服务程序和其他系统软件因处于不同的特权层而得到保护,因而可与应用程序在同一地址空间内共处而不发生越权操作。,2020/6/7,上海交通大学,32,13.232位指令的寻址方式的特点,13.2.1数据的寻址方式13.2.2转移地址的寻址方式,2020/6/7,上海交通大学,33,13.2.1数据的寻址方式,所谓指令的寻址方式(AddressingMode)是指在指令中操作数的表示方式。指令中的操作数通常有两类,即操作数据和转移地址,下面分别讨论这两种操作数的相应的寻址方式。与数据有关的寻址方式有三大类:立即寻址寄存器寻址存储器寻址。,2020/6/7,上海交通大学,34,立即寻址(ImmediateAddressing),当操作数据就在指令中时,即为立即寻址。这种操作数称为立即数,在指令中立即数可用十六进制数(以H结尾)、二进制数(以B结尾)和十进制数(不需加特殊符号)表示,也可以使用用撇号“”括起来的ASCII码的字符和字符串。注意,如果十六进制数以字母AF打头,则必须在前面加上一个“”,这是汇编程序的要求。,2020/6/7,上海交通大学,35,立即寻址,在立即寻址中,立即数为一个常量,在、微处理器中,可以是字节(位数)或字(位数),而在以上的微处理器中,立即数还可以是双字(位数)。以使用最频繁的MOV指令为例说明立即寻址时操作数在指令中的表示方法。,2020/6/7,上海交通大学,36,立即寻址,位立即数:MOVAL,H;HALMOVAL,01000011B;01000011BALMOVAL,;AL位立即数:MOVAX,H;HAXMOVAX,0100000101000010B;0100000101000010BAX,2020/6/7,上海交通大学,37,立即寻址,位立即数:MOVAX,16701;16701AXMOVEAX,12345678H;12345678HEAX字符或字符串:MOVAL,A;HAL(H为A的ASCII码),2020/6/7,上海交通大学,38,2.寄存器寻址,操作数在寄存器中,即寄存器的内容就是操作数的数据。在用汇编语言表示的指令中,以寄存器符号表示,可用做80X86操作数的寄存器如表13-1所示。采用寄存器寻址时要注意如下几点:当指令中的源操作数和目的操作数都是寄存器时,必须采用同样字长的寄存器,否则汇编时会出错。两个操作数不能同时为段寄存器。目的操作数不能是代码段寄存器,例如指令“MOVCS,AX”,汇编时没有出错,可得机器码为8EC8H,但执行时会发生问题。,2020/6/7,上海交通大学,39,表13-1寄存器寻址中的寄存器,2020/6/7,上海交通大学,40,寄存器寻址,在数据的寻址方式中,寄存器寻址方式是一种最普通的方式,使用最方便,汇编后的机器码长度最短。另外,由于寄存器是在处理器内部,整个操作都在处理器内部进行,不需访问内存的总线周期,因此其执行速度最快。,2020/6/7,上海交通大学,41,寄存器寻址,寄存器寻址时操作数在指令中的表示方法。位操作:MOVBL,AL16位操作:MOVBX,AX32位操作:MOVEBX,EAX,2020/6/7,上海交通大学,42,寄存器寻址,而以下指令是非法的:MOVBL,AXMOVSS,DSMOVCS,AX,2020/6/7,上海交通大学,43,3.存储器寻址,存储器寻址的指令操作数在存储器中,处理器要访问存储器操作数,必须先计算操作数的物理地址(PhysicalAddress,PA),在32位系统中物理地址的形成与16位系统是不同的,32位系统中,存储器寻址的能力有所增强,2020/6/7,上海交通大学,44,32位系统中的存储器寻址,80386以上的32位微处理器的基本存储单元是字节,都是字节编址的结构,32位微处理器可以访问字节(位)信息、字(16位)信息和双字(32位)信息。一个16位的字信息存储在存储器的两个连续单元中,高字节存储在高地址,低字节存储在低地址。一个32位的双字信息存储在存储器的个连续单元中,最高字节存放在最高地址,最低字节存放在最低地址。字或双字的地址由其最低字节的存放地址给出。除上述字节、字和双字外,还用两种更大的存储单位段(Segment)和页(Page)。,2020/6/7,上海交通大学,45,32位系统中的存储器寻址,32位系统(80386以上的系统)的存储器可以分为一个或多个可变长度的段,它们可以同磁盘交换信息,或由若干程序所共享。对于逻辑模块组织存储而言,分段是应用程序员的有效工具,每个段的最大容量为4GB。存储器还可组织成一个或多个容量为4KB的页,特别在多用户、多任务操作系统中,分页是系统程序员管理一个系统的物理存储器的有用工具。32位系统的存储器采用分段和分页的工具为系统设计员提供了极大的灵活性。,2020/6/7,上海交通大学,46,三种存储器地址空间,32位系统中有三种存储器地址空间逻辑地址线性地址物理地址这三种地址的关系如图13-4所示。,2020/6/7,上海交通大学,47,图13-4地址空间的转换,2020/6/7,上海交通大学,48,)逻辑地址,又称虚拟地址,由一个选择子(段选择子)和一个偏移量组成,偏移量是在寻址方式中求得的有效地址EA。位系统中每个任务最大可以包含由K个选择子确定的个存储段,每个存储段最大为GB(即由位偏移量确定),从而每个任务可以有TB的逻辑地址空间。,2020/6/7,上海交通大学,49,)线性地址,32位微处理器芯片内的分段部件将逻辑地址空间转换为32位的线性地址空间。分段部件如何完成从逻辑地址到线性地址的转换是处理器的实方式和保护方式的主要区别。在实方式下,段寄存器中的内容就是段基值,把段基值左移位形成20位的段基地址,加上16位的偏移量,形成线性地址。而在保护方式下,每个选择子都有一个32位的线性基地址与之相联系。段寄存器的内容中有一个INDEX(描述子入口变址值),由该值可以从全局描述子表或局部描述子表中读出相应的线性基地址,然后同32位的偏移量相加,从而形成最后的线性地址。,2020/6/7,上海交通大学,50,)物理地址,位微处理器芯片内的分页部件将存储单元的线性地址空间转换为物理地址空间,物理地址空间就是处理器芯片的引脚上出现的地址。如果不允许分页部件操作,则分段部件转换后的位线性地址即为物理地址。,2020/6/7,上海交通大学,51,32位的寻址方式的特点:,通用寄存器(EAX、EBX、ECX、EDX、EBP、ESP、ESI和EDI)都可用做基址寄存器,用于修改内存地址。通用寄存器除ESP外都可用做变址寄存器。能以、或的比例因子对变址值进行换算,以便于对数组结构的寻址。,2020/6/7,上海交通大学,52,种存储器寻址方式,32位系统提供了种存储器寻址方式,这种寻址方式提供了操作数所在的存储单元的有效地址。存储单元的段基地址和有效地址EA(即偏移地址)组成存储单元的线性地址(LinearAddress),在32位微处理器中,线性地址经过分页部件(PagingUnit,PU)后生成物理地址。线性地址的形成如图13-5所示。,2020/6/7,上海交通大学,53,种存储器寻址方式,2020/6/7,上海交通大学,54,种存储器寻址方式,段基地址由某一个段寄存器对应的描述子寄存器确定,而有效地址EA由基址寄存器、变址寄存器、位移量和比例因子部分按一定表达式组合而成:EA基址寄存器变址寄存器比例因子位移量,2020/6/7,上海交通大学,55,种存储器寻址方式,式中各组成部分的说明如下:位移量为指令中提供的一个位或位值。基址寄存器通用寄存器都可用做基址寄存器,其内容即基址值,通常为编译器所用,指向局部变量区的首地址。变址寄存器除ESP之外的所有通用寄存器都可用做变址寄存器,其内容即为变址值,变址寄存器用于访问数组元素或字符串。比例因子变址寄存器的值可以乘以1、2、4或(对应于操作数的长度为1、2、4或个字节)的比例因子,这种寻址方式对于访问数组或结构特别有用。,2020/6/7,上海交通大学,56,表13-232位系统中存储器寻址表,2020/6/7,上海交通大学,57,种存储器寻址方式,例如:指令“MOVEAX,DWORDI”为直接寻址,将双字单元DWORDI中的双字数据传送到32位寄存器EAX中。指令“MOVAL,ECX”为寄存器间接寻址,将数据段中由ECX寻址的存储单元中的个字节数据传送到位寄存器AL中。指令“MOVBX,EAXH”为基址寻址或变址寻址,将数据段中EAXH确定的存储单元中的字数据传送到16位寄存器BX中。,2020/6/7,上海交通大学,58,种存储器寻址方式,指令“MOVEAX,ECX”为比例变址寻址,将数据段中有效地址EA为ECX的存储单元中的双字数据传送到32位寄存器EAX中。指令“MOVEAX,EBXECX”为基址变址寻址,将数据段中有效地址为EBXECX的存储单元中的双字数据传送到32位寄存器EAX中。,2020/6/7,上海交通大学,59,种存储器寻址方式,指令“MOVAL,EBXEDI”为基址比例变址寻址,将数据段中有效地址为EBXEDI的存储单元中的个字节的数据传送到位寄存器AL中。指令“MOVEAX,EBXECX”为基址变址位移寻址,将数据段中有效地址为EBXECX的存储单元中的双字数据传送到位寄存器EAX中。指令“MOVAL,EBXEDI”为基址比例变址位移寻址,将数据段中有效地址为EBXEDI的存储单元中的个字节的数据传送到位寄存器AL中。,2020/6/7,上海交通大学,60,13.2.3转移地址的寻址方式,控制转移指令使程序不再顺序执行,而是按指令中给出的操作数转移到相应的目的地址,控制转移指令中的操作数是转移的目的地址,称为转移地址,它的寻址方式有三种,即直接寻址、寄存器寻址和存储器寻址。,2020/6/7,上海交通大学,61,1.直接寻址,指令中直接给出转移地址,通常给出的是符号地址标号(Label),例如,指令JMPSTART中的标号START即转移地址的符号表示。标号有三种属性段属性、偏移量属性和类型属性。段属性和偏移量属性就是该标号所指向的指令的段基址与段内偏移量,而类型属性有“远”(FAR)和“近”(NEAR)两种,远型标号可供段间转移,近型标号仅供段内转移。如果JMPSTART指令的下一条指令同标号START的距离在128127之间,则在操作数START前加运算符SHORT,即指令书写为JMPSHORTSTART,称为短跳转。,2020/6/7,上海交通大学,62,2.寄存器寻址,指令中给出寄存器名,该寄存器的内容即转移的目的地址,仅用于段内转移。例如指令JMPBX,该指令执行时BXIP,由于是段内转移,CS值不变,为原段地址。作为目标地址的寄存器可以是位寄存器AX、BX、CX、DX、SP、BP、SI和DI,在32位微处理器中,扩展寄存器也可用做转移指令的转移地址。例如指令JMPEAX,转移到当前代码段中的某一指令处,该指令所在存储单元的偏移地址为ECX的内容。,2020/6/7,上海交通大学,63,3.存储器寻址,指令中给出内存的有效地址EA,转移去的目的地址在数据段的内存单元中,其目的地址由EA指出。例如,指令JMPDWORDPTRBX为段间转移,其目的地址为由EA指出的双字数据,即IPEA:EACSEA:EA中的寄存器可以是BX、BP、DI或SI,也可以用其中任一个寄存器加上位移量作为EA。另外,也可用变量加上寄存器来表示。,2020/6/7,上海交通大学,64,存储器寻址,例如指令JMPTABLEIBX,转移到当前代码段的某一指令处,该指令的偏移地址为数据段中以TABLEIBX为有效地址的存储单元中的内容,TABLEI为变量名。注意:采用存储器寻址的程序转移指令除非用FARPTR或DWORDPTR等伪操作指明为一条段间转移指令外,一般汇编程序默认转移指令为段内转移。例如,指令JMPBX和指令JMPBXH以及指令JMPTABELIBX都是段内转移指令(TABELI一般为字变量),而指令JMPFARPTRBX和指令JMPDWORDPTRBX都是段间转移指令。,2020/6/7,上海交通大学,65,13.3保护方式下的寻址方式,13.3.1描述子和选择子13.3.2保护方式下的存储器寻址过程简介13.3.3保护方式下的存储器寻址过程举例,2020/6/7,上海交通大学,66,13.3.1描述子和选择子,在保护方式下,80386以上的32位微处理器的存储空间由可变长度的段组成,每个段由可以多达GB的相邻字节序列组成。段与段之间相互独立,段的位置不受限制,段与段之间可以连续排列,也可以不连续,还可以重叠,每一个段的起始地址称为段基地址(SegmentBaseAddress)或段地址,段的长度称为段限(Limit)。80386微处理器采用“段描述子”和“段选择子”的数据结构来实现保护方式下的存储器操作数的寻址。段描述子(SegmentDescriptor)又称为段描述符,用来描述对应存储段的一些基本特性,段描述子的格式如图13-6所示。,2020/6/7,上海交通大学,67,图13-6段描述子,2020/6/7,上海交通大学,68,段描述子,其中:BASE段基地址或者段地址,为段的起始地址。LIMIT段限,段的长度、范围边界。P存在位,为1表示存在(在实内存中),为0表示不存在。DPL描述子特权级,。S段描述子,为1表示代码或数据描述子,为0表示系统描述子,2020/6/7,上海交通大学,69,段描述子,TYPE段的类型。A已访问位,为1表示已经访问过。G粒度位,段限所用单位,为1表示页(KB),为0表示字节。BD默认操作数大小,为0表示16位,为1表示32位(仅用于代码段描述子)。,2020/6/7,上海交通大学,70,段描述子表,在保护方式下,80386微处理器常用三类描述子(全局描述子、局部描述子和中断描述子)来描述程序中所使用的各种存储段的特性,这些描述子分别存放在三种段描述子表(全局描述子表、局部描述子表和中断描述子表)之中,所有这些表都是变长的数组,其长度在8B64KB之间,存放在内存中。每个表最多可以容纳8192(213)个8B的段描子,用户程序使用的虚拟地址(逻辑地址)存储空间由全局描述子表和局部描述子表定义的存储分段组成。每个段的最大可寻址存储空间是4GB(232),所以处理器为用户提供了28K4GB64TB(246B)的虚拟地址空间。,2020/6/7,上海交通大学,71,全局描述子表,全局描述子表(GlobalDescriptorTable,GDT)定义了能被系统中所有任务公用的存储分段,可以避免对同一系统服务程序的不必要的重复定义与存储。GDT中包含了除中断服务程序所在的段以外的所有类型存储分段的描述符。通常在GDT中包含了操作系统使用的代码段、数据段、任务状态段以及系统中各个LDT所在段的段描述子。一个系统只能有一个GDT。,2020/6/7,上海交通大学,72,局部描述子表,局部描述子表(LocalDescriptorTable,LDT)包含了与某个任务相关联的段描述子,在设计操作系统时,通常每个任务有一个独立的LDT。LDT提供了将一个任务的代码段、数据段与操作系统的其余部分相隔离的机制。,2020/6/7,上海交通大学,73,中断描述子表,中断描述子表(InterruptDescriptorTable,IDT)最多包含个中断服务程序的位置的描述子。为容纳Intel保留的个中断描述子,IDT的长度至少应有B,系统所使用的每种类型的中断在IDT中必须有一个描述子表项,IDT的表项通过中断指令、外部中断和异常事件来访问。,2020/6/7,上海交通大学,74,描述子表,GDT在内存中的位置及其长度由全局描述子表寄存器GDTR给出,这是一个48位寄存器,其高32位存放了GDT的基地址,低16位存放了GDT的长度(段限),GDTR同GDT的关系如图13-7所示。同样IDT在内存中的位置及长度也由一个中断描述子表寄存器IDTR给出,IDTR同LDT的关系如图13-8所示。,2020/6/7,上海交通大学,75,图13-7GDTR与GDT,2020/6/7,上海交通大学,76,图13-8IDTR与IDT,2020/6/7,上海交通大学,77,LDT,LDT的定位与GDT的不同,LDT的段基址与段限由LDT描述子表示,该描述子同一般的段描述子一样存放在全局描述子表中,因此首先要从GDT中找到LDT描述子。80386微处理器中有一个局部描述子表寄存器LDTR,这是一个16位寄存器,LDTR中存放着一个称为段选择子(SegmentSelector)的16位数,段选择子用来在GDT中寻找LDT描述子,LDTR同LDT的关系如图13-9所示。,2020/6/7,上海交通大学,78,IDTR与IDT,在保护方式下,要访问某一存储段,必须知道该存储段所对应的段描述子,而段描述子是以8B长的数据结构存放在GDT或LDT中的,要找到该描述子,首先要知道该描述子在GDT或LDT中置。在32位微处理器中采用一种称为段选择子的数据结构,它是一个16位数,存放在要访问的存储段所对应的段寄存器(CS、DS、SS、ES、FS、GS)中,当一个段选择子的值装入段寄存器时,处理器自动地从LDT或GDT中选择一个段描述子,经调整后得到对应的段描述子寄存器(又称段高速缓存器)。段选择子、段描述子寄存器以及LDT或GDT的关系如图13-10所示。,2020/6/7,上海交通大学,79,图13-9LDTR与LDT,2020/6/7,上海交通大学,80,图13-10段选择子与段描述子寄存器,2020/6/7,上海交通大学,81,段选择子的格式,段选择子的格式如图13-11所示。其中:INDEX位长的选择子变址(索引)值,据此值到GDT或LDT中查找对应的描述子。TI(TableIndex)位长的表指示符。TI1时,在LDT中;TI0时,在GDT中。RPL(RequestPrivilegeLevel)位长的段选择子的请求特权级。,2020/6/7,上海交通大学,82,图13-11段选择子,2020/6/7,上海交通大学,83,13.3.2保护方式下的存储器寻址过程简介,准备工作进行描述子表的定义。在进入保护方式前,用LGDT指令装入GDTR,以定义GDT,如图13-12所示。在保护方式下,用LLDT指令装入LDTR,LDTR中为16位的选择子,再按此选择子从GDT中选择LDT描述子,并由LDT描述子定义LDT。,2020/6/7,上海交通大学,84,图13-12GDT的定义,2020/6/7,上海交通大学,85,寻址过程简介,给定一个位虚拟地址指针(程序的逻辑地址),通过选择子、描述子数据结构以及全局描述子表GDT和局部描述子表LDT实现从虚拟地址到线性地址的转换。a.位虚拟地址指针中的位为段选择子,可通过MOV指令对有关段寄存器(DSSS、ES、FS、GS)赋值来设置,位偏移量由指令的寻址方式指定。b.从段寄存器中取出选择子。,2020/6/7,上海交通大学,86,寻址过程简介,c.选择子中TI0时,则描述子在GDT中,进入步骤。d.选择子中TI1时,则描述子在LDT中:.从LDTR中取出用于LDT的选择子。.从选择子中取出Index,左移位()。.计算IndexGDT的段基地址,从GDT中取出该LDT的描述子。.从描述子中取出的LDT的段基地址就是LDT的表地址。,2020/6/7,上海交通大学,87,寻址过程简介,e.取出段寄存器中选择子的Index加到LDT或GDT的表地址中,从LDT或GDT中取出描述子。f.在LDT或GDT中找到的描述子上取出段基地址。g.48位地址指针中用“偏移地址段基地址”得到32位的线性地址。,2020/6/7,上海交通大学,88,图13-13分段机制实现地址转换,2020/6/7,上海交通大学,89,寻址过程简介,必须指出的是,在转换过程中还需要注意以下几点:第一,步骤e中Index后的值要与LDTR或GDTR中的表进行限值比较,看是否超过。如未超过,处理器的保护机制还需对该描述子的访问权进行检查,若该描述子的访问是合法的,处理器就自动地把该描述子中所要访问存储段的基地址、段限和访问权字节装入相应段寄存器的Cache寄存器(段描述子寄存器)中。第二,步骤e后,用已经装入Cache的访问权字节中的类型字段所规定的内容,对有关的存储段引用请求进行检查,同时还要对地址指针中的偏移量进行检查,以便确定该偏移量是否超出为该存储段所规定的段限,若未超过,则进入步骤。,2020/6/7,上海交通大学,90,寻址过程简介,分页机制采用了二级分页方案,查个表页目录表和页表,将32位线性地址映射到32位物理地址,这一映射机制如图13-14所示,具体过程在“操作系统”课程中论述。,2020/6/7,上海交通大学,91,图13-14二级分页机制,13.3.3保护方式下的存储器寻址过程举例,1.给出条件)虚拟地址指针4732310005AH00010000HSelecterOffset,2020/6/7,上海交通大学,92,2020/6/7,上海交通大学,93,13.3.3保护方式下的存储器寻址过程举例,1.给出条件)虚拟地址指针,13.3.3保护方式下的存储器寻址过程举例,2020/6/7,上海交通大学,94,寻址过程举例,)全局描述子表首地址(表基地址)和表长度(表限)4732310005AH00010000H(表限)(表基地址),2020/6/7,上海交通大学,95,2020/6/7,上海交通大学,96,寻址过程举例,)全局描述子表首地址(表基地址)和表长度(表限),寻址过程举例,2020/6/7,上海交通大学,97,2020/6/7,上海交通大学,98,寻址过程举例,)全局描述子表中给出个描述子,分别如下:访问权段限段基地址表内地址偏移量AHHHHAHHHHAHHHHAHHHH,寻址过程举例,2020/6/7,上海交通大学,99,)全局描述子表中给出个描述子,访问权,段限段,基地址,表内地址偏移量,寻址过程举例,2020/6/7,上海交通大学,100,2020/6/7,上海交通大学,101,寻址过程举例,2.准备工作定义描述子表)在实方式用LGDT指令装入GDTRLGDTQWORDPTRnnFFH高位(H)送GDTR中的表基地址。低位(FFH)送GDTR中的表限。,2020/6/7,上海交通大学,102,寻址过程举例,)在保护方式,用LLDT指令装入LDTRLDTR为位选择子。本题中的描述子在全局描述子表中,故本步可省略。,2020/6/7,上海交通大学,103,寻址过程举例,3.求解过程虚拟地址指针中的Selector值可由MOV指令对DS、SS、ES、PS、GS赋值。Offset由指令寻址方式指定在本题中由下述指令给出:MOVAX,AHMOVDS,AXMOVAL,H,2020/6/7,上海交通大学,104,寻址过程举例,从段寄存器中取出选择子:AHB,从中取出高位(BH),左移位(即)得到H,从AH的D位为0可知对应段的描述子在全局描述子表中。GDT的表基地址HHH,从GDT中取出对应的描述子(如下所示),,2020/6/7,上海交通大学,105,寻址过程举例,从描述子中取出段基地址H。位地址指针中Offset段基地址得到位的线性地址:HHH,2020/6/7,上海交通大学,106,13.432位微处理器指令系统简介,13.4.1实方式下的32位微处理器指令系统13.4.232位微处理器扩充指令13.4.3高级指令和保护控制指令13.4.480386新增加的指令13.4.580486新增加的指令13.4.6Pentium处理器新增加的指令,2020/6/7,上海交通大学,107,32位微处理器指令系统简介,在第章3.1节中详细介绍了8086微处理器的指令系统,这是对80286以上微处理器(包括全部32位80X86微处理器)都适用的指令集,本小节在此基础上对80386以上的32位微处理器的指令系统作一简单介绍,包括实方式下的指令系统以及保护方式下的指令系统。80386以上的32位微处理器有三种基本的工作方式,即实方式、保护方式和虚拟8086方式。这一系列的32位微处理器的指令系统包含了8086微处理器的全部指令系统,同时针对各类32位微处理器的硬件结构,扩充和增加了许多指令。,2020/6/7,上海交通大学,108,13.4.1实方式下的32位微处理器指令系统,的目标代码程序可以不加修改地在以上的位微处理器的实方式下正常运行,但是位微处理器的指令系统在实方式下有许多扩充。位微处理器提供了位寄存器,支持位地址寻址,可以使用位偏移量来进行存储器寻址,还可以使用位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP作为基址寄存器和变址寄存器(除ESP外)。,2020/6/7,上海交通大学,109,实方式下的32位微处理器指令系统,位微处理器在实方式下的物理地址最多有位有效位可在HFFFEFH范围内寻址(因为位微处理器实际上使用位地址访问存储器)。例如,欲访问FFFFH:FFFFH内存单元,在系统中,CPU计算物理地址得到FFEFH,舍弃最高位,访问FFEFH单元,而在位系统中,CPU计算物理地址得到FFEFH,即访问FFEFH内存单元。,2020/6/7,上海交通大学,110,实方式下的32位微处理器指令系统,扩大了以下指令的工作范围。()LFSreg,mem将指针mem装入reg和FS,reg可以是位,也可以是位。()LGSreg,mem将指针mem装入reg和FS,reg可以是位,也可以是位。,2020/6/7,上海交通大学,111,扩大了以下指令的工作范围,()LSSreg,mem将指针mem装入reg和SS,reg可以是位,也可以是位。()JECXZdestECX0,转移到dest所指的目的地址。()PUSHFS、PUSHGS、POPFS和POPGSFS、GS寄存器进栈、出栈指令。,2020/6/7,上海交通大学,112,实方式下的32位微处理器指令系统,()PUSHAPUSHAD将全部通用寄存器进栈,进栈次序为AX、CX、DX、BX、SP、BP、SI、DIEAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。()POPAPOPAD从堆栈弹出全部通用寄存器,弹出次序与PUSHAPUSHAD相反。,2020/6/7,上海交通大学,113,实方式下的32位微处理器指令系统,()PUSHFD将EFLAGS进栈。()POPFD从堆栈弹出EFLAGS。()PUSHimm式中imm为立即数,该指令可将立即数进栈,imm可以是datadatadata,若为data,则符号扩展。,2020/6/7,上海交通大学,114,13.4.232位微处理器扩充指令,以上的微处理器还扩充了以下指令的功能。()IMULdest,src,src立即乘法指令,dest为reg,src为regmem,src为datadata。功能:destsrc(被乘数)src(乘数)。注意:结果只能是位。,2020/6/7,上海交通大学,115,扩充指令,()CDQEAX中的双字符号扩展为EDX:EAX中的四字。()CWDE将AX中的字符号扩展为EAX中的双字。()SALSHLSARSHRdest,countdest是移位对象,可为reg或mem;count是移位次数,可为data或CL。,2020/6/7,上海交通大学,116,扩充指令,()RCLRCRROLRORdest,count对dest和count的要求同SAL指令。()SHLDdest,src,count双精度左移指令,使双精度量左移,产生一个单精度量,dest可以是reg或mem,src为reg,count为data或CL。功能:dest左移count次,移出位送到CF,右端空出位用src的高位部分填补,src值不变。()SHRDdest,src,count双精度右移指令,对dest、src、count的要求同SHLD指令,功能为右移,类似于SHLD。,2020/6/7,上海交通大学,117,扩充指令,()MOVSDCMPSDLODSDSTOSDSCASD这条串操作指令实现了32位数据的串操作,源地址数为DS:ESI或EAX,目的操作数为ES:EDI或EAX,功能同MOVSBCMPSBLODSBSTOBSCASB(见第章3.1.2小节),并按DF值自动修改ESIEDI指针。,2020/6/7,上海交通大学,118,扩充指令,()INSdest,DX从IO端口输入串到存储器。式中,dest为mem,规定为ES:EDIDI,DX存放输入端口的地址。功能:DS:EDIDIDX,按DF值修改EDIDI指针。()INSBINSWINSD功能:功能同INS指令,传送单位由助记符中BWD指定为字节字双字。INSINSBINSWINSD指令可采用REP前缀。,2020/6/7,上海交通大学,119,扩充指令,()OUTSDX,src式中,src为mem规定DS:ESISI,DX存放输出端口的地址。功能:DXDS:ESISI,按DF值修改ESISI指针。()OUTSBOUTSWOUTSD功能:功能同OUTS指令,传送单位由助记符中BWD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论