《IntelXCPU系列的寄存器》由会员分享,可在线阅读,更多相关《IntelXCPU系列的寄存器(26页珍藏版)》请在金锄头文库上搜索。
1、IntelXCPU系列的寄存器主要内容n学习寄存器知识的意义n32位CPU系统寄存器和数据结构n寄存器分类介绍q通用寄存器q标志寄存器q控制寄存器q调试寄存器q中断和异常管理寄存器q内存管理寄存器n在操作系统上用到的寄存器学习寄存器知识的意义n掌握系统软件设计q汇编嵌入在C语言中的编写qBoot loader的设计(BSP)n理解Intel CPU的发展趋势n深刻理解平台的体系结构n编写更高质量的代码n编译器底层的优化32位CPU系统级寄存器和数据结构(1)大家在大家在这张图中中,注意寄注意寄存器存器类别之之间的关系的关系.12233432位CPU系统级寄存器和数据结构(2) 逻辑地址地址 线
2、性地址性地址物理地址物理地址转换图页框选择符偏移量CR3描述符表1503100223112 1121段描述符基地址+页目录页表项页内偏移值页目录表页表页目录项页表项物理地址逻辑地址线性地址寄存器分类介绍(1) -通用寄存器AXBXCXDXSPBPSIDI堆栈指针源地址基址指针目的地址指针寄存器变址寄存器数据寄存器通用寄存器如果前面带由大写字母E,代表32位寄存器寄存器分类介绍(2)n标志寄存器(EFLAGS register) -only oneq作用: 控制任务状态和模式切换、中断处理、指令追踪和访问权限控制.寄存器中的标志位需要特权指令代码才可以修改(特权指令:运行在内核态下的代码)Fig
3、ure : System Flags in the EFLAGS Register置标志位的有效位看你具体要做什么,对应的位置置有效的标志位寄存器分类介绍(3)n控制寄存器(CR0, CR1, CR2, CR3, and CR4)q作用:控制寄存器决定处理器的操作模式和当前执行任务的一些特征q种类:nCR0: 控制系统的工作模式和处理器的状态nCR1: 保留nCR2 :保留出错的线性地址nCR3:页目录基址的物理地址和PCD和PWT标志位(和CACHE有关)nCR4:一些结构的扩展.表明对于特定的处理器和操作系统执行支持. 由实模式转换到保护模式、二级页面映射机制的建立、中断处理等等,会用到这
4、些寄存器,.寄存器分类介绍(4)n控制寄存器(CR0, CR1, CR2, CR3, and CR4)在这些寄存器中, 设置标志位的主要集中在CR0与CR4.寄存器分类介绍(5)n控制寄存器(CR0, CR1, CR2, CR3, and CR4)qCR0nPG:分页有效时,置位为1,清空时为0.与PE一同使用.该指令表明是否使用页表将线性地址转换成物理地址nCD: cache 缺失设置位nNW:直写无效(直写:高速缓存中的数据始终保持与主存储器中数据匹配 )nAM: 对齐功能屏蔽(与EFLAGS寄存器中 AC标志位一同使用)nWP:写保护nNE: 数字错误标志位(与浮点协处理器共同使用)nE
5、T: 扩展类型.设置有效位时,支持 ntel 387 DX 数学协处理器指令.nTS: 每当任每当任务切切换时就就设置置该位位,并且在解并且在解释协处理器指令之前理器指令之前测试该位位nEM;该位表明是否需要仿真协处理器的功能nMP:协处理器监视标志位nPE: 保护模式使能,当设置有效位,CPU工作在保护模式.反之,实模式.寄存器分类介绍(6)n控制寄存器(CR0, CR1, CR2, CR3, and CR4)qCR3:nPCD:控制当前页目录表的缓冲,当设置清空时,缓冲.置位时,缓冲无效.与CR0中的CD或PG一同使用nPWT:控制cache采取直写还是回写的策略.当设置清空时,回写有效.
6、当置位时,直写有效.qCR4:nVME:虚地址模式.当清空时,无效.nPVI:保护模式虚中断,当清空时,无效nTSD:时间戳允许标志位.当清空时,允许RDTSC指令执行在任务特权级上.当置位时,只允许工作在特权级0.nDE:调试扩展.置位,表明DR4与DR5将产生没有定义的异常nPSE:当置位,使用4M的页面;清空,使用4K的页面nPAE:置位,使用36物理内存的分页机制.清空时,使用32位分页机制nMCE:置位,使用机器检查异常机制.nPGE:置位,启动全局页面.当写CR3时,也不会被替换.nPCE:置位,表明使RDPMC指令工作在任何保护级别.nOSFXSR:置位.表明操作系统支持FXSA
7、VE and FXRSTOR指令nOSXMMEXCPT:置位.表明操作系统支持不可屏蔽的SIMD浮点异常.寄存器分类介绍(7)n调试寄存器q作用:调试寄存器主要作用是调试应用代码、系统代码、开发多任务操作系统.来监视代码的运行和处理器的性能.qDR0-DR3:调试地址寄存器qDR4DR5:保留.还没有定义qDR6: 调试状态寄存器qDR7: 调试控制寄存器在开发底层系统时,会用到这些寄存器.寄存器分类介绍(8)n调试寄存器设置标志位集中在DR7寄存器分类介绍(9)n调试寄存器寄存器nDR0-DR3:保留32位断点的线性地址.nDR6qB0B3:断点状态的监测qBD:调试寄存器访问监测.置位,表
8、明在指令流中,下一条指令将访问其中 的一个调试寄存器qBS:单步执行标志位qBT:任务转换标志位nDR7:qL0L3:局部断点使能标志位qG0-G3: 全局断点使能标志位qLE AND GE:置位,表明处理器可以监测导致数据断点的指令.推荐置位为1.qGD:通用监测使能标志位.表明是否开启调试寄存器保护.qLEN0 through LEN3 : 用来表明相应断点地址寄存器内存位置的大小.qR/W0 through R/W3: 相应断点的状态寄存器分类介绍(10) -中断和异常管理寄存器n中断描述符表(IDT)q中断描述符和每一个中断和异常向量的门描述符有关.而门描述符就是每一个中断或异常处理程
9、序的入口地址.Figure : Relationship of the IDTR and IDTn中断门和陷阱门都是间接的指向一个过程,该过程将在当 前执行任务上下文中执行.门描述符中的段选择符指向 GDT或当前LDT中的一个可执行段的描述符.门描述符的 偏移字段值指向中断或者异常处理过程的开始处.n中断的执行或者异常处理过程的方式与CALL指令调用过 程相似.只是在堆栈的使用上略有不同(call调用使用的是CS与IP,还有返回地址;中断需要保存的上下文要多一些).n中断门和陷阱门的区别在于对中断允许标志位IF的影响(对于中断门,在转移过程中把IF置为0,使得在处理程序执行期间屏蔽掉INTR中
10、断;对于陷阱门,在转移过程中保持IF位不变,即如果IF位原来是1,那么通过陷阱门转移到处理程序之后仍允许INTR中断。).寄存器分类介绍(11) -中断和异常管理寄存器寄存器分类介绍(12) -中断和异常管理寄存器nIDT DESCRIPTORSq任务门描述符q中断们描述符q陷阱门描述符寄存器分类介绍(13) -内存管理寄存器nGDTR:全局段描述符表寄存器nLDTR: 局部段描述符表寄存器nIDTR: 中断描述符表寄存器,指向中断向量表(前面已讲)nTask register: 任务寄存器,指向处理器当前所需当前任务的信息.n全局段描述符表寄存器(GDTR)q在Intel X86 CPU系列
11、的寻址模式一讲中,实模式下的段寄存器在保护模式下不是传统意义上的代表地址的概念,而变成了指向段描述符的一个索引.因此我们看到的六个寄存器都变成了segment selector.寄存器分类介绍(14) -内存管理寄存器Figure1: segment selectorFigure2: segment registers寄存器分类介绍(15) -内存管理寄存器n全局段描述符表寄存器(GDTR)BASE Segment base address(段基址)DPL Descriptor privilege level(段描述符特权级)LIMIT Segment Limit (段限)P Segment
12、present (段存在位)寄存器分类介绍(16) -内存管理寄存器n任务管理q系统中,一个任务由两部分组成:任务的运行空间和任务状态段(TSS).任务的运行空间包括一个代码段、一个堆栈段、若干数据段.TSS指明了任务的运行空间和任务的状态.在多任务系统中,TSS还提供了连接任务的机制.Figure . Structure of a Task寄存器分类介绍(17) -内存管理寄存器nTSS-任务状态段qTask Staten段寄存器:指明了当前任务运行空间 (CS, DS, SS, ES, FS, and GS).n通用寄存器的状态n EFLAGS寄存器的状态、EIP寄存器的状态、CR3寄存器
13、的状态、任务寄存器的状态、LDTR寄存器的状态.nI/O映射基地址和I/O地址 、指向特权0, 1, and 2的堆栈的堆栈指针、指向先前的运行任务. Figure 1: 32-Bit Task-State Segment (TSS)这是一个数据结构,一个任务的所有信息存储在这各字段内.这些字段分为两类:第一: 处理器只读其中信息的静态字段集;第二:每次任务切换时,处理器将会更新的动态字段集.寄存器分类介绍(19) -内存管理寄存器nTSS-任务状态段q我们在上图中看到,TSS是一种特殊的数据结构.提供一种有效的、受保护的多任务机制.qTSS可以出落在线性空间的任何位置,和其它段一样,它是使用
14、段描述符来定义的.访问TSS描述符会导致任务间的切换.我们可以将描述符的DPL字段设置为0(最高优先级).只允许可信任的软件执行任务的切换.TSS的描述符只能放在全局描述符表GDT中.寄存器分类介绍(20) -内存管理寄存器n任务寄存器q作用:支持多任务运行q任务描述符n通过指向TSS来确定当前执行的任务.有16位可见部分和16位不可见部分.可见部分的选择符用于在GDT表中选择一个TSS描述符.不可见部分来存放描述符中的基地址和段限长值.n提供对TSS间接、受保护引用的任务门描述符.这种描述符是在一般段描述符格式的基地址位15:0字段中存放的是一个TSS描述符的选择符.在操作系统上用到的寄存器n举一些例子:q从实模式到保护模式的转换(CR0)q二级页式内存管理(CR3、CR4)q中断处理(IDT、IDT descriptor)q任务调度(TSS)