我收到Error: operand type mismatch for 'movaps'
的编译错误,谷歌搜索没有透露解决方案。 movups
和addps
也会出现同样的错误。
以下是相关摘录:
# load address into %eax
movaps %eax, %mm0
为了完整起见,我正在使用.s
编译-m32
文件。
答案 0 :(得分:1)
您在第一个参数上缺少间接级别,第二个参数需要是XMM寄存器(即128位SSE),而不是MM寄存器(旧的64位MMX):
movaps (%eax), %xmm0
如果您可以在C或C ++中使用内在函数而不是编写原始asm,那么您可以更轻松地执行此类操作,例如。
__m128 v = _mm_load_ps(ptr);