我需要使用SSE进行简单的ZeroMemory实现(首选SSE2)
有人可以帮忙吗?我正在通过SO和Net进行搜索,但是没有找到直接的答案。

最佳答案

ZeroMemory()memset()不够好吗?

免责声明:以下某些内容可能是SSE3。


通过循环填充所有未对齐的前导字节,直到地址为16的倍数为止
push保存xmm reg
pxor将xmm reg归零
当剩余长度> = 16时

movdqamovntdq进行写入

pop还原xmm reg。
填充所有未对齐的尾随字节。


movntdq似乎更快,因为它告诉处理器不要将数据带入缓存,但是如果要使用数据,这可能会在以后导致性能下降。如果在释放内存之前先清理内存(例如,使用SecureZeroMemory()进行处理),则可能更合适。

10-04 10:30