MSVC无法在x86上发送16byte对齐的函数参数

时间:2012-05-07 15:04:55

标签: c++ visual-studio-2010

我正在使用MSVC来使用一些SSE内在函数。为了支持这一点,我将一些数据与16字节边界对齐。但是,现在我编译为x86而不是x64,MSVC坚持认为将函数参数与16bytes对齐是非法的。但如果这是真的,那么任何人都可以将SSE数据类型作为函数参数发送?

那么如何在函数中发送16byte对齐参数呢?

1 个答案:

答案 0 :(得分:4)

  

如果这是真的,那么任何人都可以将SSE数据类型作为函数参数发送?

你做不到。 :) 在Microsoft的ABI下,您必须通过引用或指针传递它。

一种解决方法可能是使用fastcall调用约定,它显然会传递XMM寄存器中的前几个SSE参数。