上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页

2012年9月27日

关于“数据段向低扩展”——遇到一篇很佩服的帖子

摘要: 段描述符TYPE字段在ED=1时成为“向低扩展段”,至于什么是“向低扩展段”,杨季文老师这样说:“ED=0表示向高扩展,ED=1表示向低扩展...当段最大为1M时,在自然的向高扩展段内,从0~limit的偏移是合法有效的偏移,而从limit+1~1M-1的偏移是非法无效的偏移;在向低扩展段中,情形刚好相反,从0~limit的偏移是非法无效的偏移,而从limit+1~1M-1的偏移是合法有效的偏移。” 我看来看去没看懂,在网上查了好久也无收获,准备偃旗息鼓时竟遇到这么一篇帖子,作者探讨问题的态度让我佩服。原文粘下: 最近在研究保护模式,一个问题一直在困扰我,就是段的向下扩展,看雪里有一篇关于向. 阅读全文

posted @ 2012-09-27 18:00 weiweishuo 阅读(775) 评论(0) 推荐(0) 编辑

揭开硬件中断请求IRQ所有秘密(图解)

摘要: 实用:揭开硬件中断请求IRQ所有秘密(图解)http://www.sina.com.cn 2004年05月17日09:31 赛迪网--中国电脑教育报 文/蔡远翔 IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束时就需要由系统对打印机提出相应的中断请求,来以此结束这个打印的操作。 产生中断请求的设备或者事件被称为中断源,中断源可分为两类:一类是CPU内部中断,即执行软件中断指令INT或遇到软件陷阱而产生的中断,它们的中断类型号已由CPU规定好;另一类中断是由CPU以外的I/O设... 阅读全文

posted @ 2012-09-27 15:16 weiweishuo 阅读(2540) 评论(0) 推荐(0) 编辑

8259A编程

摘要: 一个外部中断请求信号通过中断请求线IRQ,传输到IMR(中断屏蔽寄存器),IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受。如果可以接受,则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位,以表示此IRQ有中断请求信号,并同时向CPU的INTR(中断请求)管脚发送一个信号,但CPU这时可能正在执行一条指令,因此CPU不会立即响应,而当这CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选,如果没有被屏蔽,那么这些请求也会被放到IRR中,也即IRR中代表它们的IRQ的相应位会被置1。当CPU执行完一条指令时后,会检查一下IN 阅读全文

posted @ 2012-09-27 15:05 weiweishuo 阅读(417) 评论(0) 推荐(0) 编辑

2012年9月26日

printf输出格式

摘要: 来自:点击打开链接printf输出格式 收藏 格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE %-5S A#### ABC## ABCDEFGH Printf 格式化字符串格式代码 1 -12 12345 123456789 %d 1 -12 12345 123456789 %6d #####1 ###-12 #12345 123456789 %.4d 0001 -0012 12345 123456789 %6.4d ##0001 #. 阅读全文

posted @ 2012-09-26 18:46 weiweishuo 阅读(227) 评论(0) 推荐(0) 编辑

printf使用变量作为输出精度

摘要: 例如: int n=2; int i=1.123; printf("%.*f",n,i); *号的位置会由n来填充。 输出结果就是1.12 据我测试,fscanf不支持变量精度的。 阅读全文

posted @ 2012-09-26 18:26 weiweishuo 阅读(226) 评论(0) 推荐(0) 编辑

2012年9月24日

orange's习题——分段机制【第3章】

摘要: 一,简答题1,全局描述符表中每个表项需要按照8字节对齐吗?答案:不需要二,填空题1,描述符的TYPE字段占_____个bit。其中的位_____指示描述符是否被访问过,用符号_____标记。位_____指示所描述的段是代码段还是数据段,用符号E标记,指示所描述的段是否可执行。当E=_____,TYPE中的位_____指示所描述的数据段是否可写,用W标记。TYPE中的位2就是_____位,指示所描述的数据段是否向低扩展。当E=_____,TYPE中的位_____指示所描述的代码段是否可读。TYPE中的位2指示所描述代码段是否是_____,用_____标识。答案:4,0,A,3,0,1,ED,1, 阅读全文

posted @ 2012-09-24 15:10 weiweishuo 阅读(129) 评论(0) 推荐(0) 编辑

2012年9月8日

orange's习题——分页机制【第3章】

摘要: 一,简答题1,什么是虚拟存储器?答案:虚拟存储器是一种软硬件结合的技术,用于提供比在计算机中实际可用的物理存储器大得多的存储器空间。这样,程序员在编写程序时,不用考虑物理存储器的实际容量。2,为什么说80386支持的虚拟地址空间达64TB?答案:虚拟地址空间由GDT 映射的全局地址空间和由LDT映射的局部地址空间组成。选择符的索引部分由13 个比特位表示,加上区分GDT 和LDT 的1 个比特位;因此Intel 80X86 CPU 共可以索引16384 个选择符。若每个段的长度都取最大值4G,则最大虚拟地址空间范围是16384 * 4G = 64T3,二级映射表表项的P位,A位,D位都参与对虚 阅读全文

posted @ 2012-09-08 19:43 weiweishuo 阅读(331) 评论(0) 推荐(0) 编辑

虚拟地址空间达64TB是怎么算来的

摘要: 搜了好多帖子,还是这篇说的有道理:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1959427&page=5虚拟地址空间由GDT 映射的全局地址空间和由LDT映射的局部地址空间组成。选择符的索引部分由13 个比特位表示,加上区分GDT 和LDT 的1 个比特位;因此Intel 80X86 CPU 共可以索引16384 个选择符。若每个段的长度都取最大值4G,则最大虚拟地址空间范围是16384 * 4G = 64T只是还不清楚这个64TB能用来干什么。 阅读全文

posted @ 2012-09-08 14:51 weiweishuo 阅读(579) 评论(0) 推荐(0) 编辑

2012年9月1日

ret向外层返回

摘要: 1,ret指令先从堆栈弹出返回地址指针(48位的selector:offset) 若selector的RPL等于当前的CPL,则直接开始向目标代码段转移的步骤,即执行jmp selector:offset 若selector的RPL大于当前的CPL,则引起向外层返回。CPL的变化也必然对应着堆栈切换。 2,内层堆栈弹掉先前堆栈切换时复制进来的参数,再弹出指向外层堆栈的指针并载入ss:esp,至此,堆栈切换到外层堆栈。 3,外层堆栈弹掉先前压入的参数。 4,检查数据段寄存器ds,es,fs,gs,以保证各自对应的段在外层cpl等级下仍是可访问,若不可访问,则装入空选择子避免保护空洞。 阅读全文

posted @ 2012-09-01 21:41 weiweishuo 阅读(207) 评论(0) 推荐(0) 编辑

进入内层时的堆栈切换

摘要: 1,根据TSS,建立同切换后CPL相对应的内层堆栈。 2,将外层堆栈指针ss,esp依次压入内层堆栈。 3,从外层堆栈复制dcount个参数到内层堆栈。 4,将当前的cs,eip压入内层堆栈。 (实际上到这里已经完成了堆栈切换的相关工作) 5,加载调用门中指定的selector:offset到cs:eip,目标代码段开始执行。 阅读全文

posted @ 2012-09-01 21:32 weiweishuo 阅读(171) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页

导航