據我所知,x64
代碼Microsoft x64
和AMD64
有兩種可能的調用約定。海灣合作委員會x64函數調用
現在,gcc
可以與-mregparm=0
參數一起啓動,如果我們正在使用AMD64
調用約定,則該參數不起作用。 發生這種情況是因爲AMD64
約定要求使用寄存器的前6個變量(我不太確定爲什麼這樣做,但我懷疑它是由於可能的堆棧安全問題而執行的)。
所以,這裏的問題:
是否有這樣的(強制寄存器使用)一些嚴格的規定使用gcc
下Microsoft x64
約定編譯時?而且,如果是的話,他們如何在不破壞兼容性的情況下繞過?
*只是很好奇*我一直在爲'x64'平臺做一些優化研究,並希望通過調用約定來解決某些誤解。 –