RT
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
st(0)... 看intel寄存器和指令手册
------解决方案--------------------------------------------------------
浮点寄存器也是寄存器,保存的是浮点数据而已(其实也可以保存64位整数---COMP类型),fst/fstp指令可以存储栈顶浮点寄存器的值到内存,任务切换时保存浮点寄存器一般用fsave/fnsave/fxsave指令。
------解决方案--------------------------------------------------------
任务切换会用fsave,它保存整个浮点单元的状态。
------解决方案--------------------------------------------------------
那是因为你的任务切换未必发生在一段浮点运算指令中间,或者切换后的进程没有使用FPU。
你说的崩溃,可能是没取到地址吧,或者分配的空间不够,可以这样:
char a[108] = "";
__asm{
lea eax,a
fsave [eax]
}