使用來自C程序的兩個整數或指針參數調用非函數inline
函數時,函數將傳遞到寄存器rdi
和rsi
。編譯是否可以這樣完成:整數/指針參數inline
函數也在寄存器中傳遞(並且而不是在堆棧上)?傳遞給Linux C內聯函數的參數
2
A
回答
3
反問題:你爲什麼在意?我認爲你不應該。這是你的編譯器工作。如果你不相信你的編譯器在那裏做正確的事情,你可能根本不應該使用它。
而且我非常肯定你的假設,即參數永遠保證寄存在寄存器中也是錯誤的。
6
當一個函數被內聯時,它被視爲它的代碼被寫入到調用它的函數中。發生這種情況時,它根本不傳遞參數。
當函數沒有內聯時,它與普通函數完全沒有區別。 inline
只是提示編譯器嘗試內聯函數;它根本不影響鏈接。
0
在C中,前兩個int不會被傳入%rdi和%rsi ...這是ABI /調用約定問題...不是語言問題。
如果函數得到內聯和周圍其餘代碼允許,整型的將可能是在通用寄存器...
但是這絕對不是你的關心...如果你保護,您可以讓編譯器生成asm來讀取和學習...
相關問題
- 1. C++將參數傳遞給內聯彙編程序函數
- 2. 將參數傳遞到內聯函數
- 3. 參數傳遞給內部函數
- 4. 參數傳遞給函數內部sapply
- 5. 將參數傳遞給內函數
- 6. 參數傳遞給函數
- 7. 參數傳遞給函數
- 8. 參數傳遞給函數
- 9. 傳遞「*」參數傳遞給函數
- 10. 將參數傳遞給一個函數內的函數 - javascript
- 11. 將參數從函數傳遞給Java中的內部函數?
- 12. C++函數參數傳遞
- 13. 傳遞給函數的參數數量?
- 14. Delphi匿名函數傳遞給內聯函數
- 15. 將C++函數作爲參數傳遞,而不使用函數指針/內聯?
- 16. 如何將參數傳遞給傳遞給mapPartitions的函數?
- 17. 傳遞函數作爲參數傳遞給另一個函數
- 18. 傳遞函數的參數作爲參數傳遞給另一個函數
- 19. 傳遞給函數的Perl參數
- 20. 傳遞給函數的打印參數
- 21. 要傳遞給CreateDIBSection函數的參數
- 22. 將參數傳遞給Compose的函數?
- 23. 通Java腳本函數作爲參數傳遞給C++函數
- 24. 傳遞給C函數
- 25. 將數組傳遞給函數參數
- 26. 作爲Javascript中的內聯函數中的值傳遞參數
- 27. 將參數傳遞給函數,該參數必須作爲參數傳遞給python中的另一個函數
- 28. 當函數作爲參數傳遞時,參數如何傳遞給該函數?
- 29. C++將可變數量的參數傳遞給一個函數
- 30. 數組列表中的參數並傳遞給新函數? C
更正,內聯函數*可能*內聯,通常由編譯器自行決定。 –
澄清的答案。 – duskwuff