在一个程序中中,函数的堆栈调用时必不可少的,在调用过程中,形参内存一般由调用方开辟和释放;函数参数的入栈顺序一般是从右到左(方便知道参数额个数),函数的返回值是由寄存器带出(1字节<=n<=8字节),栈底指针寄存器ebp在函数调用时压栈,调用后会会退到原来栈底的位置。下面介绍几个反汇编的指令:
1.移值 :mov dword ptr[ebp-4] ,14h 将某个值放到ebp-4所在的地址上(ebp为栈底指针寄存器,指向低地址:移动四个字节后的位置
2.移地址lea:lea ,eax, [ebp-4] 将[ebp-4]处的地址放到eax寄存器中
3.pop eax 将值出栈放在寄存器中
4.add eax 4 累加add+=4
5.累减sub
6.call (1)压入下一行的指令的地址 (2)跳转到被调用方
7.ret (1)pop pc转到调用方 (2)清理形参内存