2

我正在尝试使用 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 位

4

1 回答 1

5

在第二个示例var2中需要 16 字节对齐,我怀疑情况并非如此。

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

于 2012-12-23T20:59:01.587 回答