If you are smart enough, you will understand that I'm not a simple boy!

2009年8月29日星期六

VM86总算完美解决了!!

今天早上解决了VM86在VPC上运行总是出现Debug异常的问题,原因是我自以为无关紧要,漏写了一句对eflags的有效性进行校验。我还google VALID_FLAG的值,后来发现文档是有给出的。

#define VALID_FLAG 0xDFF

r->eflags = (stack32[0]&VALID_FLAGS)|EFLAG_VM|EFLAG_IF;

VPC和我的上网本是同一个主板厂商的。本以为在真机上也可以正常运行了,但经测试还是原来的现象——黑屏,很干脆,等了较长时间后才听到Speaker发出声音,似乎是程序暂停了一下又能运行了,但是屏幕还是黑屏。

然后我怀疑到是in和out的模拟问题,会不会是这个在文档上没有给出,而我自以为是却模拟了错误的做法呢?于是赶紧开启TSS的iomap功能,关掉IOPL=3的做法,重启一试,惊现与虚拟机一样的结果!!!

唉,模拟io操作既没效率又麻烦,怎么我当初这么笨啊。。。

没有评论:

发表评论

关注者