函数参数入栈

V6反汇编代码如下:

fun1:

202:      int nIndex =3;
0040231D C7 45 F8 03 00 00 00 mov         dword ptr [ebp-8],3
203:      int nParam = 5;
00402324 C7 45 F4 05 00 00 00 mov         dword ptr [ebp-0Ch],5
204:      int nRet = 0;
0040232B C7 45 F0 00 00 00 00 mov         dword ptr [ebp-10h],0
205:      nRet = Test(nIndex,nParam);
00402332 8B 45 F4             mov         eax,dword ptr [ebp-0Ch]
00402335 50                   push        eax                                                      ;低地址对应的右参数nParam 入栈
00402336 8B 4D F8             mov         ecx,dword ptr [ebp-8]
00402339 51                   push        ecx                                                      ; 高地址对应的左参数nIndex 入栈
0040233A 8B 4D FC             mov         ecx,dword ptr [ebp-4]
0040233D E8 59 ED FF FF       call        @ILT+150(CTestASMDlg::Test) (0040109b)
00402342 89 45 F0             mov         dword ptr [ebp-10h],eax                ; 赋返回值

 

...

 

218:  int CTestASMDlg::Test(int nIndex,int nParam)
219:  {
004019B0 55                   push        ebp                ; 保存fun1的ebp
004019B1 8B EC                mov         ebp,esp
004019B3 83 EC 44             sub         esp,44h
004019B6 53                   push        ebx

 

至于为什么先低址(右参)入栈原因很多,如编译器、函数调用约定,甚或语言类别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值