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

Pup*_*ppy 5 c++ visual-studio-2010

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

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

jal*_*alf 4

如果这是真的,那么怎么会有人将 SSE 数据类型作为函数参数发送呢?

你不能。:) 根据 Microsoft 的 ABI,您必须通过引用或指针传递它。

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