2012-07-24 135 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