|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
2017.7.11
有事,荒了几天。吃碗方便面惩罚一下自己。
我一直有一个想法,在windows下双击一个图标,就能实现一些很牛逼的功能;某些程序在使用过程中,遇到一些问题,总感觉应该稍微改点程序里的东西就能更好用;某些流浪软件在完全不经过我的同意就乱装乱改一些东西等等。这些程序是怎么运行的,它们的源代码(或者说汇编代码)是怎样的呢?
学《汇编语言》的时候,debug总让我觉得很神奇,它能让我们看到每句代码的执行情况,是否有一个程序类似于debug,能让我们能看到任何一段程序的运行情况呢?假如还能一边调试查看一边保存下来,不是就能把某个功能的程序据为己有?
这不是神经病,这是理想~!
据说Bochs好像有类似的功能,今天下了个2.6.9版本的,不过不会用。哈哈,还是英文太菜了,bochsrc-sample.txt是它的说明文档,看不懂。接下来一段时间,就把它翻译一下,顺便学学英文吧。
https://wenku.baidu.com/view/7e47ded484254b35eefd344b.html###是一个中文的BOCHS使用简单教程,可以稍微参考一下。
关于保护模式:
罗云彬老师的书中关于80386CPU是这么介绍的:
80386增加了两个辅助段寄存器FS GS、引入了两个新的寄存器GDTR LDTR、新增的CR0 当然应该还有CR1 CR2 CR3等等。
其实80386的寄存器是:
80386共提供7种类型的32位寄存器,如下:
通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)
段寄存器(CS、SS、DS、ES、FS、GS)
指令指针寄存器和标志寄存器(EIP、EFLAGS)
系统表寄存器(GDTR、IDTR、LDTR、TR)
控制寄存器(CR0、CR1、CR2、CR3、CR4)
调试寄存器(DR0、DR1、DR2、DR3、DR4、DR5、DR6、DR7)
测试寄存器(TR6、TR7)
引自http://blog.csdn.net/u014774781/article/details/47707385
GDTR指向全局描述符表,直接指向内存地址;
LDTR指向局部描述符表,只存放索引值;
IDTR指向中断描述符表。
CR0的控制位PE(位0),修改它能切换到保护模式。
CR0的PG位(位31)决定是否启用内存分页机制。
等等
和8086比,保护模式到底是怎么一回事?
我暂时理解为80386的保护模式下,每个段,不管什么段,只要是一个类型的数据,都增加了一个描述符,描述符是放在这些数据的前边还是后边或者在哪我不知道,反正只要是一个类型的数据,都应该有一个描述符,同类的描述符好像是由操作系统(注意是操作系统)放在一起组成一个描述符表,这些新的什么什么寄存器就是管理这些描述符表或者内存页表页目录、中断描述符表的东西。
很难理解,我现在还是糊里糊涂的,不知道理解得对不对。
新设的这些寄存器,从硬件上提供了管理这些符表的功能以及规则。操作系统应该是利用这功能及规则,制定详细的管理办法或者说流程。
哎,现在都64位了,而且CPU种类那么多了,针对不同的CPU又有那么多厉害的系统,WINDOWS LINUX IOS Android 各种AI等等
让我眼前一片迷茫,不是一片黑暗,而是各种老大太过耀眼,根本看不清前进的路了。
敢问路在何方,路在脚奥奥下,敢问路在何方,路唔在脚奥奥奥奥下~~
2017.7.11 |
评分
-
查看全部评分
|