从x86编译使用MOVAPS的错误

时间:2013-09-19 11:32:43

标签: gcc x86 sse simd mmx

我收到Error: operand type mismatch for 'movaps'的编译错误,谷歌搜索没有透露解决方案。 movupsaddps也会出现同样的错误。

以下是相关摘录:

# load address into %eax
movaps %eax, %mm0

为了完整起见,我正在使用.s编译-m32文件。

1 个答案:

答案 0 :(得分:1)

您在第一个参数上缺少间接级别,第二个参数需要是XMM寄存器(即128位SSE),而不是MM寄存器(旧的64位MMX):

movaps (%eax), %xmm0

如果您可以在C或C ++中使用内在函数而不是编写原始asm,那么您可以更轻松地执行此类操作,例如。

__m128 v = _mm_load_ps(ptr);