我正在使用MSVC来使用一些SSE内在函数。为了支持这一点,我将一些数据与16字节边界对齐。但是,现在我编译为x86而不是x64,MSVC坚持认为将函数参数与16bytes对齐是非法的。但如果这是真的,那么任何人都可以将SSE数据类型作为函数参数发送?
那么如何在函数中发送16byte对齐参数呢?
答案 0 :(得分:4)
如果这是真的,那么任何人都可以将SSE数据类型作为函数参数发送?
你做不到。 :) 在Microsoft的ABI下,您必须通过引用或指针传递它。
一种解决方法可能是使用fastcall调用约定,它显然会传递XMM寄存器中的前几个SSE参数。