xmm整数加法 - 分段错误

时间:2012-12-23 20:53:09

标签: assembly x86 sse simd

我正在尝试使用XMM寄存器,使用SSE2指令以汇编语言将4个数字添加到其他4个数字。我确实成功了,但我找到了一些我不理解的东西。 如果我这样添加:

movdqu xmm0, oword [var1]
movdqu xmm1, oword [var2]
paddd xmm0, xmm1
movdqu oword [var1], xmm0 

完美无缺。

但如果我这样试试:

movdqu xmm0, oword [var1]
paddd xmm0, oword [var2]
movdqu oword [var1], xmm0 

它给我一个分段错误。

第二种做法有什么问题?我正在使用Nasm,Intel Atom N270,Linux Mint 12 32位

1 个答案:

答案 0 :(得分:4)

在第二个例子中var2需要16字节对齐,我怀疑不是这样。

在第一个示例中,您使用的是未对齐的加载/存储,因此您没有看到问题,但第二个示例中的paddd指令需要一个16字节对齐的内存操作数。