假如预期的对齐是N字节,
a = src % N,
b = dst % N,
a、b不相等而且都不为0时,应该是最坏的情况,
1、如果这个硬件还支持N/2、N/4、N/8的对齐,可以缩小对齐粒度来搞,
比如N = 4, a = 1, b = 3时,按4字节对齐来操作比较麻烦,但可以用2字节对齐来操作。
2、按上面ArchLinux的说法,只保证src、dst之一对齐。leadyu说的VC的memcpy.asm里有一部分代码是这样的,区分vmovdqu、vmovdqa指令。
1和2哪个速度快,未知。而且1的分支判断比较麻烦。
【 在 adoal 的大作中提到: 】
: 如果source和dest对的偏移不一样,比如一个余1一个余0,
: 那是不是就很难优化了^o^
:
--
修改:z16166 FROM 123.118.191.*
FROM 123.118.191.*