Meh*_*dad 7 c x86 assembly sse
我用VC++ 2010编译器编译了下面的代码:
__declspec(dllexport)
unsigned int __cdecl __mm_getcsr(void) { return _mm_getcsr(); }
Run Code Online (Sandbox Code Playgroud)
并生成的代码是:
push ECX
stmxcsr [ESP]
mov EAX, [ESP]
pop ECX
retn
Run Code Online (Sandbox Code Playgroud)
为什么有push ECX
/ pop ECX
指令对?
Rob*_*obᵩ 12
编译器在堆栈上腾出空间来存储MXCSR.它可以同样做得很好:
sub esp,4
stmxcsr [ESP]
mov EAX, [ESP]
add esp,4
retn
Run Code Online (Sandbox Code Playgroud)
但"推动ecx"可能更短或更快.