Một số có thể cung cấp ví dụ sử dụng fastcall để sử dụng với gcc không? Nếu có thể, bạn có thể cung cấp cuộc gọi tương đương mà không sử dụng fastcall và giải thích cách chúng khác nhau không?Ví dụ về Fastcall GCC
9
A
Trả lời
17
Không có sự khác biệt trong cách gọi chức năng nhất định sẽ xuất hiện trong mã C. Sự khác biệt duy nhất là trong khai báo hàm. GCC manual có thêm chi tiết.
$ cat fastcall.c
extern void foo1(int x, int y, int z, int a) __attribute__((fastcall));
extern void foo2(int x, int y, int z, int a);
void bar1()
{
foo1(99, 100, 101, 102);
}
void bar2()
{
foo2(89, 90, 91, 92);
}
$ gcc -m32 -O3 -S fastcall.c -o -
.
.
bar1:
.
.
movl $100, %edx
movl $99, %ecx
movl $102, 4(%esp)
movl $101, (%esp)
call foo1
.
.
bar2:
.
.
movl $92, 12(%esp)
movl $91, 8(%esp)
movl $90, 4(%esp)
movl $89, (%esp)
call foo2
2
Dưới đây là một số liên kết
Is it possible to convince GCC to mimic the fastcall calling convention?
Các vấn đề liên quan
- 1. Định nghĩa hàm fastcall GCC
- 2. Ví dụ về Winsock?
- 3. Ví dụ về JGraphT
- 4. Ví dụ về D.ccurl
- 5. Ví dụ về MultiSelectListPreference
- 6. Ví dụ về pysmb
- 7. Ví dụ về các ví dụ điển hình
- 8. Ví dụ về O (n!)?
- 9. Ví dụ về Android SSLEngine
- 10. Ví dụ về Android AudioRecord
- 11. Ví dụ về Java BitSet
- 12. Ví dụ về Hash-Collisions?
- 13. Ví dụ về DDD .NET
- 14. Ví dụ về Tcl/Tk?
- 15. ví dụ hay về Javadoc
- 16. Ví dụ về Bison java
- 17. wxPython Ví dụ về WebView
- 18. Ví dụ về jQuery & history.js
- 19. Ví dụ hay về MapServer/OpenLayers
- 20. Ví dụ về Đăng nhập Javascript Facebook
- 21. Ví dụ về ứng dụng winform nhibernate
- 22. Ví dụ về thiết kế JavaScript API
- 23. Ví dụ về bản đồ hữu hạn
- 24. Kiểm tra PHP ví dụ về DateTime?
- 25. Ví dụ về waitpid, WNOHANG và SIGCHLD
- 26. Ví dụ về mẫu tạo OpenCV
- 27. Ví dụ về lỗ hổng UDP NAT
- 28. Ví dụ về Java GAE DeferredTask?
- 29. Ví dụ đơn giản về DispatcherHelper
- 30. Ví dụ về khóa Android 4.3
Bạn có cần hiển thị dọn dẹp sau cuộc gọi để nhấn mạnh sự khác biệt không? +1 cho hướng dẫn sử dụng x-ref. –