Я прочитал статью Optimizing Memcpy improves speed, у меня есть вопрос о алгоритме с измененным GNU, я получаю сообщение об ошибке, когда код src & 0xFFFFFFFC, src является указателем на пустоту, может ли он быть левым операнд для '&'? Я что-то пропустил?Вопрос о модифицированном алгоритме GNU
Благодаря
Ошибка 1 Ошибка C2296: '&': недопустимый, левый операнд имеет тип 'константный недействительным *'
void * memcpy(void * dst, void const * src, size_t len)
{
long * plDst = (long *) dst;
long const * plSrc = (long const *) src;
if (!(src & 0xFFFFFFFC) && !(dst & 0xFFFFFFFC))
{
while (len >= 4)
{
*plDst++ = *plSrc++;
len -= 4;
}
}
char * pcDst = (char *) plDst;
char const * pcSrc = (char const *) plSrc;
len += 4;
while (len--)
{
*pcDst++ = *pcSrc++;
}
return (dst);
}
Вы знаете, GCC на ПК, чтобы понять базовое * memcpy * определение достаточно хорошо, чтобы оно выдавало код для записи longs за раз, а double-longs, если вы скажете, что он может использовать MMX. –