2012-07-24 129 views
2
 pushf  //couldnt store this in other registers 
     movd xmm0,eax//storing in xmm registers instead of pushing 
     movd xmm1,ebx// 
     movd xmm2,ecx// 
     movd xmm3,edx// 
     movd xmm4,edi//end of push backups 
     . 
     .//doing work 
     . 
     movd edi,xmm4//pop edi 
     movd edx,xmm3//pop edx 
     movd ecx,xmm2//pop ecx 
     movd ebx,xmm1//pop ebx 
     movd eax,xmm0//pop eax 
     popf 

比在我的电脑中推eax版本要快50%。这安全吗?使用xmm寄存器保存通用目录是否安全?

回答

4

是的,只要您(或您拨打的某些代码)在此期间不使用XMM寄存器。实际上,这种技巧通常在RAM初始化之前用于BIOS代码中。

+0

Ram-init?你的意思是加电顺序? – 2012-07-24 12:58:57

+2

刚刚重置之后,但在它检测到是否存在任何RAM以及是否安全使用它之前。另见[romcc](http://en.wikipedia.org/wiki/Romcc) – 2012-07-24 13:13:15