2015-07-12到2015-07-23小结

汇编真是个麻烦的家伙。。。。。。。。

特别是32位保护模式下的汇编,知识交叉实在是太多太深了。。。。。。。。


这11天左右的时间,我主要完成了以下部分的探索:

1> TSS 的配置、切换, 以及任务门(Task Gate)的使用

2> 内存分页, 虚拟内存映射

3> IDT的配置使用, 以及陷阱门(Trap Gate),中断门(Interrupt Gate)的使用


我还想探索以下内容:

===>  写一个TSS及其对应代码段,用于安放在IDT中等待异常发生后杀死对应用户程序,再初始化一个Ring3下的用户程序作为炮灰参与此次实验。。。

===>  初始化一个Ring 3级别的用户程序,并通过直接jump/call到 Conforming(有的人译成"可依从",也有人译作“一致”, 还是原词误会小些) 代码段, 然后初始化一个调用门(Call Gate),然后一样。

===> 借助1999年Intel手册卷三打开进入奔腾处理器指令,特别是MMX指令技术的大门

===> 结构化异常处理(Structured Exception Handling, SEH)是不是和几个故障类(Falut)的异常(Exception)有关?特别是那个占据0号位置的除法错误异常(#DE)进入例程返回后总是重复执行导致#DE的语句,C++上实验除数为0时提示没有相关处理例程,猜想可能有关系,待日后实验验证。

===> ARQL指令(详见Intel手册卷3的第5.10.4小节),以便进一步深入理解x86上的OS是如何守住PM下检查的死穴——段选择子的RQL字段的。

===> 玩玩多处理器在裸机上怎样用汇编指令控制着同时工作,特别是CPU-0已经进入保护模式初始化完内存分页以后,CPU-1怎么办的,以及“总线封锁信号”是怎么起作用的。我想要的最终效果是在80X25文字模式下两CPU同时打印字符。

===> Legacy支持器,或者说虚拟8086方式(V86方式)怎么能给Ring3的程序这么大的权力而同时保证不发生系统混乱,

===>  一直先RM下调取BIOS第0x13号中断读取软盘也很不爽,并且内存与硬盘之间页面置换很可能以后没法弄,得自己写个类似于驱动程序的东西来直接控制,,,这个貌似是工业标准,待查找资料后验证。

===> 关于前面我的问题:BIOS中断怎么在进入PM以后调用,答案可能是“没法,只有OS自己的设备驱动程序才有效”

===> 我想象能力不出众,一直在80X25文字显示方式我也有些吃不消,我希望能够借助相关资料打开进入图形显示的道路,,,,


其实写上边这堆东西的时候也并没有注意到,自己只模模糊糊学会了3点,而发现的不会的项竟然翻了几番



顺便吐下槽:

===> 终于想象出Intel在1986年以前规模是多么小了,Intel手册一共不到500页,错别字竟然那么多~~~

===> 从某个TSS执行一段时间后来一个inter-segment jump,跳到另一个TSS上,原来的那个TSS在GDT显示竟然是Available!!

===> 本以为把数据段选择子装入CS寄存器是#GP,结果今天晚上做实验证明是#UD,三观尽毁........那么,怎么才能诱发一次通用保护异常(#GP)呢?

===> 我真的难以想象这几天我是怎么坚持下来的,一个不足400行的代码竟然调试了2天半,而且很多时候调试程序花了一上午时间发现竟然是个很低级的错误引起的!

后来弄得我学会了几点东西:

1.尽量使用自动化编译脚本,别再用WinHex一个扇区一个扇区地复制数据,这就是我GitHub里面“auto-make.cmd” 以及dd.exe (dd for Win32)这几个文件的故事

2. 把所有的宏(Macro)提取出来放到单独文件,用宏的文件都去包含它,到了要修改宏的数值的时候,只需要改一遍就OK,并不会出现混乱的情况——这就是“common_macro.asm”这个文件的故事

3. 复用前期代码已经测试稳定的代码而不是每次都从头开工, Test_Bench和MyMiniLibrary的故事——但是造成了注释混乱、还是有漏网之鱼“_32_show_string”这个不稳定的代码真是把我给搞凌乱了.....



        不管怎么样,这几天的生活已经告一段落了,继续泡在学习布置的作业海洋里,泡在高考的浑水里,希望我不会被淹死~~!



                                                                 任务尚未完成,IT男仍需努力。

                                                                 不过,鉴于睡觉时间到,还是从长计议吧........

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值