MS Virtual-PC中通过CALL指令进行任务转换的问题。
主机:Windows 7。使用WINDOWS VIRTUAL PC软件,创建一个祼机,在祼机上编写软件执行任务切换。
发现,使用CALL指令进行任务切换,可以成功运行。但是,用以下指令检测EFLAGS寄存器的NT位,发现是“0”。于是,导致使用IRETD指令返回到上一个任务时出错:
PUSHFD
POP EDX
;(显示EDX寄存器的内容)
但是,使用BOCHS和VBOX都没有这个问题,程序运行正常。
怀疑这是个缺陷,但想了想,不应该是个缺陷,毕竟这是最基本的东西。大家说说,到底是什么原因。
[解决办法]
为什么使用CALL切换任务呢?
万一哪个程序死循环了,你的系统也就这样死了
[解决办法]
pm下,在call之后,NT是一定要置位的,如果没发生就很可能是bug。
还有就是任务切换都发生在中断里面,现在的pc机上的os都是硬件抢断式。