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