2020-11-13(调用约定)
生活随笔
收集整理的這篇文章主要介紹了
2020-11-13(调用约定)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
a. x86 32位架構的調用約定
__cdecl:參數從右往左依次壓入棧中,調用完畢,由調用者負責將這些壓入的參數清理掉,返回值置于EAX中,絕大多數x86平臺的c語言程序都在使用這種約定
__stdcall:參數同樣從右往左依次壓入棧中,調用完畢,由被調用者負責清理壓入的參數,返回值同樣置于EAX中。windows的很多api都是這種方式提供的
__thiscall:為類方法專門優化的調用約定,將類方法的this指針放在ECX寄存器中,然后將剩余參數壓入棧中
__fastcall:為加速調用而生的調用約定,將第一個參數放在ECX中,將第二個放在EDX中,然后將后續的參數從右往左壓入棧中。
b.X86 64位架構的調用約定
Microsoft x64位(x86-64)調用約定:在windows上使用,一次(從左往右)將前四個參數放入RCX,RDX,R8,R9這4個寄存器,然后將剩下的參數從右往左壓入棧中。
SystemV x64調用約定:在linux macOS 上使用,比Microsoft的版本多了兩個寄存器,使用RDI,RSI,RDX,RCX,R8,R9這六個寄存器傳遞前6個參數,剩下的從右至左壓棧
總結
以上是生活随笔為你收集整理的2020-11-13(调用约定)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020-11-13(四大组件简单回忆内
- 下一篇: 2020-11-13(混淆技术)