我写了一个简单的协作多线程库。目前,我总是在切换到新上下文时使用fxsave
/保存和恢复 fpu 状态。fxrstor
但这在 cdecl 调用约定中是必要的吗?
举个简单的例子:
float thread_using_fpu(float x)
{
float y = x / 2; // do some fpu operation
yield(); // context switch, possibly altering fpu state.
y = y / 2; // another fpu operation
return y;
}
编译器可以在调用后对 FPU 状态做出任何假设yield()
吗?