x86_64崩溃,因为字节码不正确

时间:2017-03-20 21:23:45

标签: assembly nasm x86-64 crash-dumps sse2

我试图找到不常发生崩溃的根本原因。我在win64上运行时在win32上运行代码。我的本机simd代码的编译器是nasm,命令行是

nasm -f win32 -DPREFIX -I./asm/  -o $(IntDir)%(Filename).obj %(FullPath)

原始源代码是

****22fd   66 0F 38 1D C0       pabsw       xmm0,xmm0  
****2302   66 0F FD E8          paddw       xmm5,xmm0  
****2306   66 0F 70 45 20 EE    pshufd      xmm0,xmmword ptr [ebp+20h],0EEh
****230c   66 0F 6C C0          punpcklqdq  xmm0,xmm0    

但崩溃dmp文件显示错误的字节码(很少发生,一次在Intel i7-2600 CPU @ 3.40GHz上)

****1e9d   66 0F 38 1D C0              pabsw       xmm0,xmm0  
****1ea2   66 0F FD E8                 paddw       xmm5,xmm0  
****1ea6   66 0F 70 05 20 EE 66 0F 6c  pshufd      xmm0,xmmword ptr ds:[0F66EE20h],6Ch  // crash!

似乎byecode不正确,而windbg!chkimg显示没有错误。 原因是否与REX前缀相关或我应该使用" BITS 32"明确地在.asm文件的头上? 欢迎提出任何建议,谢谢!

0 个答案:

没有答案