2012-10-26 26 views
9

Tôi đang làm việc trên hạt nhân của riêng mình bằng cách sử dụng GCC và khi gọi các hàm C từ mã asm, tôi phải tự mình làm add esp,xx. Sau khi tìm kiếm một số tôi thấy rằng stdcall là một phát minh của Microsoft và không thể sử dụng nó trong GCC. Có cách nào thuận tiện để thực hiện công việc này không?Có tương đương với stdcall trong GCC không?

+0

Vì bạn nói rằng đó là hạt nhân của riêng mình, tôi đã gỡ bỏ sang Linux. –

Trả lời

5

Có bất kỳ sự tương đương nào của stdcall trong linux không?

hạt nhân của tôi trong một môi trường linux

Chờ, đây là hạt nhân của riêng bạn, hoặc hạt nhân Linux? Bởi vì nếu đó là hạt nhân của riêng bạn, nó không phải Linux nữa.

  1. Nếu bạn đang làm việc trên Linux, bạn sẽ muốn kết hợp với quy ước gọi điện thông thường và viết lắp ráp của bạn cho phù hợp.

  2. Nếu bạn đang làm việc trên hạt nhân của riêng bạn, bạn có thể làm bất cứ điều gì bạn muốn. GCC và Clang cả hỗ trợ stdcall ước gọi trên bộ vi xử lý ix86, ví dụ,

    #define stdcall __attribute__((stdcall)) 
    

    Xem: tài liệu tham khảo Function Attributes (GCC manual)

+0

Cảm ơn rất nhiều! Tôi đang biên dịch hạt nhân của riêng tôi với gcc và ai đó nói rằng không có stdcall trong linux gcc. Nhưng nó hoạt động tốt với mã của bạn! – babel92

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