在我的32位x86 Ubuntu11.10上,gcc4.6.3通過堆棧傳遞參數。有沒有強制gcc通過寄存器傳遞參數的gcc優化?以及gcc如何做到這一點?我想要一些細節。讓gcc通過寄存器傳遞參數
2
A
回答
5
2
GCC在棧上傳遞參數,因爲Linux-x86 ABI指定了這個參數。通過fastcall函數屬性,您可以更改該屬性,這當然會破壞ABI並導致由此導致的各種問題。
一個解決方案可能是swith到x86-64,其中ABI指定(一些)參數由寄存器傳遞。或者如果你喜歡流血的東西,新的x32 ABI與x86-64 ABI類似,但是具有32位指針。
+0
我知道x86-64 ABI可以做到這一點。由於我只有32位機器,因此需要了解gcc優化是否可以做到這一點。 – KUN 2012-07-20 08:36:26
相關問題
- 1. 如何使用gcc asm關鍵字在寄存器中傳遞函數參數
- 2. 爲什麼要通過寄存器將參數傳遞給`__switch_to`函數?
- 3. 通過存儲過程傳遞參數
- 4. 通過寄存器傳遞內存地址
- 5. 將函數的參數傳遞給堆棧還是寄存器?
- 6. 通過引用傳遞一個寄存器變量
- 7. 通過選擇器傳遞參數
- 8. 通過HTTP適配器傳遞參數?
- 9. 在SSE寄存器(GCC,C++)
- 10. GCC寄存器優化
- 11. 將IO寄存器作爲模板參數傳遞
- 12. 將DbContext對象作爲參數傳遞給autofac類寄存器
- 13. 通過url傳遞參數
- 14. 通過ICommand傳遞參數
- 15. 通過server.execute傳遞參數?
- 16. 通過url傳遞參數
- 17. 通過url傳遞參數?
- 18. 通過傳遞參數
- 19. 傳遞參數通過powershell.exe
- 20. 通過URL傳遞參數
- 21. 通過Ajax傳遞參數
- 22. 通過PageFactory傳遞參數
- 23. connot通過參數傳遞參數
- 24. 通過http post參數傳遞參數
- 25. 在x86-64溢出的gcc參數寄存器
- 26. PIC彙編 - 通過寄存器作爲參數
- 27. 如何通過參考傳遞參數?
- 28. C++:通過模板傳遞參數Vs通過函數參數
- 29. 傳遞硬件寄存器指針
- 30. c + +通過參數的內存問題遞歸傳遞
[調用約定 爲不同的C++編譯器和操作系統](http://www.agner.org/optimize/calling_conventions.pdf) – 2012-07-20 08:36:52