Với Visual C++ trên WIN32 có một vấn đề lâu dài với các hàm có 4 hoặc nhiều tham số SSE, ví dụ:Hạn chế căn chỉnh tham số Visual Studio và Windows x64 ABI
__m128i foo4(__m128i m0, __m128i m1, __m128i m2, __m128i m3) {}
tạo ra một lỗi:
align.c(8) : error C2719: 'm3': formal parameter with __declspec(align('16')) won't be aligned
trở nên phức tạp vấn đề, Visual C++ vẫn không cần thiết áp đặt những hạn chế ABI ngay cả khi chức năng là __inline
.
Tôi tự hỏi nếu điều này vẫn còn là một vấn đề trên Windows 64 bit? Giới hạn ABI vẫn áp dụng trên x64?
(Tôi không có quyền truy cập vào một hệ thống Windows 64 bit nếu không tôi muốn thử nó bản thân mình, và tìm kiếm mở rộng Google đã không bật lên bất cứ điều gì dứt khoát.)
Theo [Agner Sương mù của nhãn hiệu "ước Calling" (phần 7.2)] (http://www.agner.org/optimize/), Windows64 vượt qua tất cả các thông số __m128 bởi con trỏ, do đó, 4 hoặc nhiều tham số __m128 không phải là vấn đề ở đó. (Không thể kiểm tra điều này vì tôi cũng không có quyền truy cập vào hệ thống Windows). –