【Win32汇编】__declspec(naked)裸函数
生活随笔
收集整理的這篇文章主要介紹了
【Win32汇编】__declspec(naked)裸函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用 __declspec(naked) 定義的函數,編譯器只會負責參數壓棧、執行CALL指令,和釋放參數的內存(堆棧平衡),除此之外啥也沒有,比如提升堆棧,寄存器的保存和恢復,或者是函數返回,這些都要自己添加。
上圖是一個裸函數,因為連參數都沒有,編譯器做的事情就是一個CALL。由于沒有RET,所以程序會出錯。
調用處生成的CALL
跳轉到函數體,全是INT3,沒有RET,函數無法返回到調用處,程序出錯。
下面給出一個裸函數實現加法的例子。
返回值通過 EAX 返回給主函數。
總結
以上是生活随笔為你收集整理的【Win32汇编】__declspec(naked)裸函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Win32汇编】MOVS,STOS,R
- 下一篇: IEEE浮点数存储