番茄花园-一章概述.ppt

上传人:小飞机 文档编号:6392182 上传时间:2023-10-26 格式:PPT 页数:20 大小:391.32KB
返回 下载 相关 举报
番茄花园-一章概述.ppt_第1页
第1页 / 共20页
番茄花园-一章概述.ppt_第2页
第2页 / 共20页
番茄花园-一章概述.ppt_第3页
第3页 / 共20页
番茄花园-一章概述.ppt_第4页
第4页 / 共20页
番茄花园-一章概述.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《番茄花园-一章概述.ppt》由会员分享,可在线阅读,更多相关《番茄花园-一章概述.ppt(20页珍藏版)》请在三一办公上搜索。

1、第一章 概述,提纲,80386保护模式简介Bochs简介实验环境的搭建,80386保护模式简介,回顾实模式实模式下的寄存器集合通用寄存器段寄存器状态和控制寄存器寻址空间与寻址方式寻址空间实际物理地址=(段寄存器 4)+偏移地址MOV AX,ES:1200HCS0 x0000:IP=0 x7c00 和CS0 x0700:IP=0 x0c00 以及 CS=0 x07c0:IP=0 x0000所寻址的地址是完全相同的!,80386保护模式简介(续),回顾实模式实模式下的中断中断向量表存放在物理内存开始的位置(0 x0000-0 x03ff)总共最多可以有256个中断向量00h-04h 号中断向量为系

2、统专用08h-0fh 硬件中断(8259A使用)10h-1fh BIOS使用20h-3fh DOS使用 如常用的 int 21h40h-ffh 用户使用,80386保护模式简介(续),一个实模式下用户程序的例子各个段在物理上必须是连续的装载程序在将程序装入时需要按照具体的装载位置设置CS、DS、SS,80386保护模式简介(续),实模式系统存在的问题安全性问题程序采用物理地址来实现访存功能,而无法实现对任务的代码和数据的保护一个程序可以通过改变段寄存器和偏移寄存器修改不属于自己的代码或者数据,甚至操作系统分段机制本身的问题段必须是连续的,从而无法利用零碎的空间段的大小有限制,从而限制了代码的规

3、模,80386保护模式简介(续),保护模式带来的变化保护模式下的寄存器通用寄存器(从16位扩展到32位)EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP段寄存器(维持16位)CS、DS、SS、ES、FS、GS状态和控制寄存器(32位)EFLAGS、EIP、CR0、CR1、CR2、CR3系统地址寄存器GDTR、IDTR、TR、LDTR调试与测试寄存器,80386保护模式简介(续),80386保护模式简介(续),寻址方式的变化在保护模式下,分段机制是利用一个称作段选择子的偏移量到全局描述符表中找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,然后再加上偏移地址量便得到

4、了最后的物理地址。一般保护模式段式寻址可用xxxx:yyyyyyyy表示。其中xxxx表示索引,也就是段选择子,是16位的;yyyyyyyy是偏移量,是32位的。段选择子(xxxx)为段寄存器,如CS、DS、SS、ES、FS、GS;偏移量(yyyyyyyy)是一个32位寄存器,如ESI、EDI、EBP、ESP。,80386保护模式简介(续),80386以及以后的处理器专门设计了一个寄存器GDTR(Global Descriptor Table Register),专门用于存储全局描述符表在内存中存放的位置。,80386保护模式简介(续),段描述符每个描述符为8个字节(8864位)代码段和数据段

5、的描述符,段基址为2,3,4,7字节,共32位。段限长为0,1以及6字节的低四位,共20位,段限长即段最大长度,与属性G共同确定。G=0时描述符中的20位段限长为实际段限长,最大限长为1MB(0FFFFFh)。G=1则 32位段限长为描述符中的20位乘以4KB,即段限长左移 12位后加上FFFH,最大限长为 4GB。,80386保护模式简介(续),段描述符的属性D/B:对于不同类型段含义不同。在可执行代码段中,这一位叫做D位,D=1使用32位地址和32/8位操作数,D=0使用16位地址和16/8位操作数。在向下扩展的数据段中,这一位叫做B位,B=1段的上界为4GB,B=0段的上界为64KB。在

6、描述堆栈段的描述符中,这一位叫做B位,B=1使用32位操作数,堆栈指针用ESP,B=0使用16位操作数,堆栈指针用SP。AVL:Available and Reserved Bit,通常设为0。P:存在位,P=1表示段在内存中。DPL:描述符特权级,取值0 3共4级。0特权级为最高,而3特权级为最低,表示访问该段时CPU所需处于的最低特权级,我们在后面会详细讨论特权级的问题。S:描述符类型标志,S=1表示代码段或者数据段;S=0表示系统段(TSS、LDT)和门描述符。,80386保护模式简介(续),描述符类型TYPE和S结合使用,可以表示的描述符类型有:代码段、数据段、TSS、LDT、中断门(

7、Interrupt Gate)、陷阱门(Trap Gate)、调用门(Call Gate)、任务门(Task Gate)。,当S=1,TYPE 8时,当S=1,TYPE 8时,80386保护模式简介(续),Hello world在实模式下的实现Hello world在保护模式下的实现,80386保护模式简介(续),保护模式下的中断管理在保护模式中,中断的类型可以分为两种。一种是硬件中断(Interrupts),一种是软件中断(Exceptions),又称为异常。其中硬件中断在系统中是由外部事件所引起的,如:一次I/O操作的结束。其产生与CPU当前所执行的指令没有关系。从是否能够被屏蔽来划分,可

8、将其分为两类:可屏蔽中断与不可屏蔽中断。其中前者由CPU的INTR引脚接收信号,后者由NMI引脚接收信号。我们可以通过CLI和STI指令来设置EFLAGS寄存器的IF位,如果这一位被清除,则CPU会禁止外部中断传递信号给INTR引脚,这样便屏蔽了可屏蔽中断,但是这对于NMI引脚不起作用,因此无法屏蔽不可屏蔽中断。异常是在CPU执行指令期间遇到非法指令所产生的,根据是由是否可恢复和恢复点位置不同又可将异常划分为三种。它们是故障(Fault),陷阱(Trap)和中止(Abort)。在保护模式下中断向量表的基地址存放在IDTR寄存器中;,80386保护模式简介(续),安全性问题x86平台CPU有0、

9、1、2、3四个特权级,其中level0是最高的特权级,可以执行所有指令;而level3则是最低的特权级,只能执行算术逻辑指令,很多特殊的操作(如CPU模式转换以及I/O操作指令)都不能在这个级别下进行。现代操作系统在实际中往往只需使用到level0和level3两个特权级,具体的就是操作系统内核运行时系统处于level0(即CS寄存器的末两位为00),而用户程序运行是系统是处于level3的(即CS的末两位为11)。将在第五章进行详细讲述。,Bochs简介,VMWare虚拟机系统(RHEL5.1 i386 Server)的安装、Bochs系统(bochs-20090704)的安装;认识配置文件

10、中参数的使用;几个使用Bochs使用系统的例子。,Bochs简介(续),利用Bochs做系统调试常用调试命令c/continue 表示继续执行s/step/stepi count 表示继续执行count条指令,如果没有设定count的值,则执行一条指令Ctrl-C 停止执行,返回命令行Ctrl-D 如果命令行此时是空的则退出Bochs模拟q/quit/exit 退出调试和执行 断点设置命令vb/vbreak seg:off 用虚拟地址来设置断点,其中seg表示段基址,而off是偏移地址lb/lbreak addr 用线性地址来设置断点,addr表示线性地址b/break/pb/pbreak a

11、ddr 用物理地址来设置断点,addr表示物理地址,Bochs简介(续),利用Bochs做系统调试查看内存命令x/nuf addr 查看当前内存某个地址的内容,其中addr代表线性地址查看信息的命令r/reg/regs/registers 列出CPU的所有寄存器以及它们的当前值fp/fpu 列出所有FPU寄存器和他们的当前值mmx 列出所有MMX寄存器和他们的当前值sse 列出所有SSE寄存器和他们的当前值sreg 显示段寄存器以及它们的内容creg 显示控制寄存器以及它们的内容info cpu 列出所有CPU寄存器和他们的当前值info eflags 显示eflags寄存器的内容info break 显示当前的断点信息,本章结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号