您的位置:首页 > 其它

arm memset的一些理解!!!

2011-08-16 14:18 155 查看
在c标准中,memset是一个字节一个字节的set buf。。但在arm机上,对齐4个字节的读写比一个字节的读写速度要快许多。。有时候为了速度。。只能改进memset按照4个字节刷buf。。

void memset16(sl_uint16 *dst, sl_uint16 val, int len)

{

#if 1//defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)

register int l = (sl_uint32)dst & 3;

register int i, v;

register int *dst2;

register int val2 = val << 16 | val;

if (len < 4)

{

*dst = val;

return;

}

if(l == 2)

{

*dst = val;

dst2 = (int*)(dst+1);

v = (len - l)%4;

len = (len - l)/4;

} else

{

dst2 = (int*)dst;

v = len % 4;

len = len/4;

}

for (i=0; i< len; i++)

*dst2++ = val2;

if (v != 0)

{

*(sl_uint16*)dst2 = val;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: