/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http:// **
*****************************************************************/
#define IS_END(n) ((n&0xFF)&&(n&0xFF00)&&(n&0xFF0000)&&(n&0xFF000000))
char* StrCpy(char* szDest, const char* szSource)
{
char* szPret = szDest;
assert(szDest && szSource);
if ((3 & (int)szSource) && IS_END(*(int*)szSource))
{
while (*szDest++ = *szSource++)
if ((3 & (int)szSource)==0) break;
}
{
int *pDes = (int*)szDest, *pSr = (int*)szSource;
while (IS_END(*pSr))
{
*pDes++ = *pSr++;
}
szDest = (char*)pDes, szSource = (char*)pSr;
}
while(*szDest++ = *szSource++)
;
return szPret;
}
我的C版本,其实还有一个优化,不过效果不明显,干脆没有写上来
我没有否认汇编什么什么,用上MMX指令的话可以快很多,C编译器根本不可能优化得更快
但和C版本的优化是用的同一个原理
不过这似乎偏题了。
" border="0" />[color=white]