C++ MSVC无法在x86上发送16字节对齐的函数参数

C++ MSVC无法在x86上发送16字节对齐的函数参数,c++,visual-studio-2010,C++,Visual Studio 2010,我正在使用MSVC来使用一些SSE内部函数。为了支持这一点,我将一些数据以16字节的边界对齐。然而,现在我编译的是x86而不是x64,MSVC坚持认为我将函数参数与16字节对齐是非法的。但如果这是真的,那么人们怎么能发送SSE数据类型作为函数参数呢 那么如何在函数中发送16字节对齐的参数呢 如果这是真的,那么任何人怎么能发送SSE数据类型作为函数参数呢 你不能。:) 在Microsoft的ABI下,您必须通过引用或指针传递它 一个解决方法可能是使用调用约定,显然,该约定在XMM寄存器中传递前几个

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

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

如果这是真的,那么任何人怎么能发送SSE数据类型作为函数参数呢

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


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

我想接下来的自然问题是“编译器不能为我执行此转换吗?”。哎呀,你在这方面比我强。参考资料如下:根据:@mystical:这是x64调用约定的文档。他在问x86:)@Mysticial:是的,我之所以感到震惊是因为它在x64中工作得很好。说到x64调用约定,我发现它在任何情况下都不允许您在XMM寄存器中传递SSE参数,这是非常愚蠢的。现在他们终于有了XMM寄存器可用的硬保证,他们决定不使用它们