2012-05-07 25 views
5

Tôi đang sử dụng MSVC để sử dụng một số nội tại SSE. Để hỗ trợ điều này, tôi đã căn chỉnh một số dữ liệu của tôi ở ranh giới 16byte. Tuy nhiên, bây giờ mà tôi biên dịch cho x86 thay vì x64, MSVC khẳng định rằng nó là bất hợp pháp đối với tôi để sắp xếp một tham số hàm đến 16byte. Nhưng nếu đó là sự thật thì làm thế nào để bất cứ ai có thể gửi các kiểu dữ liệu SSE như các tham số chức năng?MSVC không thể gửi tham số chức năng của liên kết 16byte trên x86

Vậy làm cách nào để gửi 16byte các thông số được canh chỉnh trong một hàm?

Trả lời

4

nếu đó là sự thật thì làm cách nào để bất kỳ ai có thể gửi các loại dữ liệu SSE dưới dạng tham số chức năng?

Bạn không thể. :) Theo ABI của Microsoft, bạn phải chuyển nó bằng tham chiếu hoặc con trỏ.

Một cách giải quyết khác có thể là sử dụng quy ước gọi fastcall, rõ ràng là, vượt qua vài đối số SSE đầu tiên trong sổ đăng ký XMM.

+0

Tôi đoán câu hỏi theo dõi tự nhiên là "Trình biên dịch có thể thực hiện chuyển đổi này cho tôi không?". – Puppy

+0

Bleh, bạn đánh tôi với điều này. Tham chiếu ở đây: Theo: http://msdn.microsoft.com/en-us/library/zthk2dkh.aspx – Mysticial

+0

@Mysticial: đó là tài liệu cho quy ước gọi điện thoại x64. Anh ấy hỏi về x86 :) – jalf

Các vấn đề liên quan