在使用AES指令集为AES加密加速的时候我使用了VisualStudio 2022 C++进行开发,在编译为64位程序时没有问题,但是在编译为32位程序时执行_mm_loadu_si128
、_mm_aeskeygenassist_si128
等相关函数时有概率发生崩溃
这段代码来自于Intel的官方文档,且在Debug x64、Release x64、Release x86中均没有问题,在Debug x32中如果使用volatile
关键字修饰相关函数会导致错误位置改变
根据微软提供的文档,这些函数在x86架构下也应该能够使用
在x86模式下使用SSE指令集时,一个最常见的问题是关于内存对齐的。_mm_loadu_si128
函数这里的“u”表示未对齐(Unaligned),它允许从任何地址加载128位数值,无论该地址是否16字节对齐,并不会因为边界问题崩溃。然而,在某些情况下,未对齐读取可能导致性能降低。
但根据你分享的信息和图片看来,应该不只是简单地未对其数据引起了错误;拷贝回寄存器或提供空间应该可以解决此类类型常规操作.
由于我们没有具体代码以及更详细环境配置请与我核实以下几点:
以上都只是一些建议思路供参考,如果觉得还是不能确定源头,请尝试把异常产生点去确认软硬件兼容行确保编译环境稳定;也欢迎您提供更多有助分析解决问题元素希望能进一步协助您站栈相关类型调试挖掘工作.