写汇编代码的时候不停的通过寄存器交换数据
那么我想问一下系统一个进程执行到一半时候去执行另一个进程的情况下是不是自动把所有的寄存器压栈?
------解决方案--------------------------------------------------------
理论上,是的,而且其中的操作由操作系统完成
------解决方案--------------------------------------------------------
to see TSS in kernel windows
------解决方案--------------------------------------------------------
3.线程环境
在第12章中已经提到过,Windows为不同的线程循环分配时间片,当挂起一个线程的时候,为了以后能够将它恢复执行,系统必须首先将线程的运行环境保存下来,当线程在下一个时间片恢复执行时,将运行环境恢复回去,线程就不会感觉到自己被打断过,这就像甲外出的时候把办公室交给乙管,不管乙把办公室搞成什么样子,只要在甲回来之前把所有东西恢复原状,甲就不会意识到甲出去的时候办公室被挪做它用了。
抄自罗云彬《Windows环境下32位汇编语言程序设计》第一版第13章(523页)
------解决方案--------------------------------------------------------
这个和你的cpu类型有关。通常只有程序的地址值是自动保存的。有的也保存状态寄存器。其它的是由程序保存的。和你的操作系统有关。
------解决方案--------------------------------------------------------
这个由os内核中的tss来实现