
OS技术
文章平均质量分 61
wolftop
秋风落叶乱为堆 扫尽还来千百回 一笑罢休闲处坐 任它落地自成灰
展开
-
零散OS经验
<br /> <br />1,org XXX: 表示从CS:XXX的地方开始定位<br />如:<br />org 1000h<br />pg0:<br />org 2000h<br />pg1:<br />mov ds,[pg0+0x5] ;表示ds=[cs:1000h+0x5]<br /> <br />寻址的段对应:<br />存取方式 默认段 偏移地址 段超越 <br /> 取指令 CS IP - - - - 对应指令:jmp,call,ret,iret,org,X原创 2010-12-02 22:31:00 · 954 阅读 · 0 评论 -
X86保护模式编程总结(2)
CPU复位后的初始化:EFLAGS=0x00000002 (高10位未定义)EIP=0x0000FFF0CR0=0x60000010CR2/CR3/CR4=0x00000000CS={选择符=0x0F000; 基地址=0xFFFF0000; 段限=0x0FFFF; AR=存在,读/写,已访问}SS,DS,ES,FS,GS={选择符=0x0000; 基地址=0x0000; 段限=0x0FFFF; AR=存在,读/写,已问}EDX=0x000005xx{ DH=CPU部件标识,DL=CPU版本号}EAX=0 或原创 2010-11-24 20:53:00 · 1449 阅读 · 0 评论 -
X86保护模式编程总结(9)完
<br /> <br /><br /><br />高速缓存,流水线和缓冲<br />PentiumCPU利用指令高速缓存和数据高速缓存一个时钟周期内最多访问两个数据引用和32个字节的原始操作码.(数据和指令高速缓存每个有8K字节大.每个行组32字节)<br />软件通过使各个页表项中PCD位置位来禁止.硬件通过对位于该区域的地址的总线周期撤销KEN#信号来禁止.(仅对读不命中时高速缓存行组的填充动作才产生,不对写不命中产生)<br />PentiumCPU数据高速缓存的更新策略:<br />1,通写: 对高原创 2010-11-25 01:38:00 · 1037 阅读 · 0 评论 -
X86保护模式编程总结(8)
<br /> <br /><br /><br />调试<br />一组调试寄存器保存了断点的存储器地址和I/O位置.断点可请求调试软件.原理是在存储器或I/O操作涉及这些地址中的某一个时就产生异常.调试寄存器支持指令断点和数据断点.<br />设置指令断点的方法的是用断点指令来取代正常指令.在执行断点时指令时调用调试程序.<br />支持调试的体系结构特性:<br />1,保留的调试中断向量: 指定在调试程序事件发生时被调用的某一过程或任务.<br />2,调试地址寄存器: 指定最多四个断点的地址<br /原创 2010-11-25 01:36:00 · 1542 阅读 · 0 评论 -
X86保护模式编程总结(7)
<br /> <br /> <br /> <br /> IO输入/输出<br />I/O端口地址0xF8到0xFF被保留,供CPU使用.系统开发者不要使用它<br />保护方式下I/O<br />1,对存储器映象的I/O端口的访问,同对任何其它存储器的访问一样,受段页影响<br />2,I/O指令的执行也受两种保护机制的作用:<br /> A,EFLAGS的IOPL字段控制对I/O指令的访问<br /> B,TSS段的I/O允许位映象控制对I/O地址空间中的各个端口的访问.<br />在分页机制中,如果高速原创 2010-11-25 01:35:00 · 1616 阅读 · 0 评论 -
X86保护模式编程总结(5)
<br /> <br /><br /><br /><br />任务<br />引起任务切换的四种情况:<br />1, 当前任务执行转移到TSS描述符的JMP或CALL指令<br />2, 当前任务执行转移到任务门的JMP或CALL指令<br />3, 中断或异常索引IDT中的任务门.<br />4, 在NT标志被置位时,当前任务执行IRET指令<br /> <br />任务切换的步骤:<br />1,检查当前任务是否允许切换到新任务,TSS描述符和任务门的DPL>RPL和CPL.<br />2,检查新任务原创 2010-11-25 01:31:00 · 1618 阅读 · 0 评论 -
X86保护模式编程总结(3)
<br /> <br /><br /><br />配置数值计算环境:<br />系统必需装入CR0中的MP,EM,NE位,来控制浮点指令的软件仿真,FPU和CPU环境之间的同步,以及浮点异常的软件或外部中断处理,这些位在CPU复位时被清0.<br />MP位(监控协处理器):一般对于有FPU的CPU,MP应=1,反正为0.用来确定FPU环境不同于当前执行任务环境时,WAIT指令是否自陷,当MP=1&&TS=1时,WAIT将产生设备不可用故障.<br />EM位(仿真协处理器):一般对于有FPU的CPU,EM原创 2010-11-24 20:58:00 · 1024 阅读 · 0 评论 -
X86保护模式编程总结(6)
<br /> <br /><br />中断和异常<br />中断:<br />可屏蔽中断,在CPU的INTR引脚接收的中断请求,IF=1时才允许发生可屏蔽中断<br />不可屏蔽中断,在CPU的NMI输入脚上接收到,CPU无法关闭不可屏蔽中断.<br />异常:<br />CPU检测的异常被分为3种:<br />故障,是在已被检测到异常的指令之前的指令边界上报告的异常.故障在恢复到允许指令重新启动状态时由机器报告.用于故障处理程序的返回地址指向故障的指令,而不是指会故障指令之后的指令.<br />自陷,自陷原创 2010-11-25 01:33:00 · 1344 阅读 · 0 评论 -
X86保护模式编程总结(1)
系统设计的步骤:1, 初始化相关硬件.并装入系统.2, 取得并测试相应硬件的参数.并初始化如X387等硬件.3, 加载GDT到GDTR(第一个描述符必须为0,至少需要一个代码段和一个数据段)4, 加载IDT到IDTR(必须先关中断,加载完后可打开)5, 设置CR0中PE=1(也可和PG位一起设,并用JMP大跳)并重新装载段寄存器.6, 建立页目录和页表,并将页目录基地址放入CR37, 将CR0中PE=1&&PG=1 (设置之后需用JMP指令刷新预取指令队列,pentium不用)8, 建立LDT并将它在GDT原创 2010-11-24 20:50:00 · 1264 阅读 · 0 评论 -
UNIX/LINUX 平台可执行文件格式分析(转)
<br />施聪 (memncmp@yahoo.com.cn), 高级程序员、网络设计师<br />简介: 本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是对可执行文件格式的一个综述,并通转载 2010-12-27 21:34:00 · 789 阅读 · 0 评论 -
X86保护模式编程总结(4)
<br /><br /><br />CPU标识:<br />EFLAGE标志位<br />8086CPU: 第12-15位始终置位<br />Intel286CPU: 在实模式下,12-15位始终清除<br />32位CPU: 在实模式下,第15位始终清除,第12-14位具有最后被装入的值.<br /> 在保护模式下,第14位具有最后被装入的值,第15位被清除.<br />第18位: Intel486和pentium置位. Intel386清原创 2010-11-25 01:30:00 · 1290 阅读 · 0 评论