CALL,RET和LEAVE
汇编中,函数的参数压栈,一般在ebp上面(地址上大下小)。
CALL指令的步骤:首先是将返回地址(也就是call指令要执行时EIP的值)压入栈顶,然后是将程序跳转到当前调用的方法的起始地址。即一共执行push和jump指令。(入栈,跳转)
RET指令则是将栈顶的返回地址弹出到EIP,然后按照EIP此时指示的指令地址继续执行程序。(弹栈,执行)
LEAVE指令是将栈指针指向帧指针,然后POP备份的原帧指针到%EBP。
Leave等价于:
movl %ebp %esp
popl %ebp

浙公网安备 33010602011771号