我需要使用SSE进行简单的ZeroMemory实现(首选SSE2)
有人可以帮忙吗?我正在通过SO和Net进行搜索,但是没有找到直接的答案。
最佳答案
ZeroMemory()
或memset()
不够好吗?
免责声明:以下某些内容可能是SSE3。
通过循环填充所有未对齐的前导字节,直到地址为16的倍数为止push
保存xmm regpxor
将xmm reg归零
当剩余长度> = 16时movdqa
或movntdq
进行写入pop
还原xmm reg。
填充所有未对齐的尾随字节。movntdq
似乎更快,因为它告诉处理器不要将数据带入缓存,但是如果要使用数据,这可能会在以后导致性能下降。如果在释放内存之前先清理内存(例如,使用SecureZeroMemory()
进行处理),则可能更合适。