none
函数调用的反汇编堆栈代码的疑惑 RRS feed

  • 常规讨论

  • 函数调用:

    int _tmain(int argc, _TCHAR* argv[])
    {
    同上理解, 保存现场
    004113D0  push        ebp 
    004113D1  mov         ebp,esp
    004113D3  sub         esp,0F0h ;一共留了0F0h(240)空间
    004113D9  push        ebx 
    004113DA  push        esi 
    004113DB  push        edi 
    004113DC  lea         edi,[ebp-0F0h]
    004113E2  mov         ecx,3Ch ; ecx = 3C(60),3C*4 = 0F0h,
    004113E7  mov         eax,0CCCCCCCCh
    004113EC  rep stos    dword ptr es:[edi]
    同上理解.
        int a = 1, b = 2, c = 3;
    定义a,b,c并存储在为函数留出的临时存储空间中.
    004113EE  mov         dword ptr [a],1
    004113F5  mov         dword ptr [b],2
    004113FC  mov         dword ptr [c],3

    =================

    以上是截自一个C++函数调用理解的帖子,有些局部变量int a,b,c的疑惑.

    mov dword ptr[a],1; 这里的a是指地址吧,怎么做到的a正好在//sub  esp,0F0h ;一共留了0F0h(240)空间//

    这条语句留出的堆栈空间里呢? 实在看不出来是怎么设置局部变量a 的地址的。

             
    2012年12月6日 2:25

全部回复