#ifdef __cplusplus
extern "C"
#endif
void *(* memcopy)( void *dest , void *src , int n );
extern "C"
#endif
void *(* memcopy)( void *dest , void *src , int n );
void *memcopy_dword(void *dest, void *src, int n)
{
_asm {
mov esi, src
mov edi, dest
mov ecx, n
mov ebx, ecx
and ecx, 3
rep movsb
mov ecx, ebx
shr ecx, 2
rep movsd
}
return dest;
}
void memcopy_init() {
memcopy=memcopy_dword;
}
/* 数据量小但使用频繁的memcpy之内嵌汇编内联版 */
__inline void fbcopy( void *d, void *s, int i)
{
_asm {
mov ecx, i
mov esi, s
mov edi, d
rep movsb
}
}