首页 > 代码库 > 汇编 ? cdecl 函数调用约定,stdcall 函数调用约定
汇编 ? cdecl 函数调用约定,stdcall 函数调用约定
知识点: ? cdecl 函数调用约定 ? stdcall 函数调用约定 ? CALL堆栈平衡 配置属性--> c/c++ -->高级-->调用约定 一、cdecl调用约定 VC++默认约定__cdecl 1、源代码 int __cdecl add1(int a,int b) { return a+b; } 2、生成汇编代码 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV EBP,ESP 00401003 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00401006 |. 0345 0C ADD EAX,DWORD PTR SS:[EBP+C] 00401009 |. 5D POP EBP 0040100A \. C3 RETN ; POP EIP 3、调用代码 push b push a call add1 add esp,8 00401031 |. 6A 02 PUSH 2 ; 0012FF7C 00401033 |. 6A 01 PUSH 1 00401035 |. E8 C6FFFFFF CALL stdcall_.00401000 ; __cdecl add1 0040103A |. 83C4 08 ADD ESP,8 ; RETN 8 二、stdcall调用约定 API函数约定 __stdcall 1、源代码 int __stdcall add2(int a,int b) { return a+b; } 2、生成汇编代码 00401010 /$ 55 PUSH EBP 00401011 |. 8BEC MOV EBP,ESP 00401013 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 00401016 |. 0345 0C ADD EAX,DWORD PTR SS:[EBP+C] 00401019 |. 5D POP EBP 0040101A \. C2 0800 RETN 8 ; RETN 8 //ADD ESP,8 3、调用代码 push b push a call add2 0040103D |. 6A 04 PUSH 4 ; 0012FF7C 0040103F |. 6A 03 PUSH 3 00401041 |. E8 CAFFFFFF CALL stdcall_.00401010 ; __stdcall add2 PUSH 下一个EIP
汇编 ? cdecl 函数调用约定,stdcall 函数调用约定
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。