CALL,RET和LEAVE

汇编中,函数的参数压栈,一般在ebp上面(地址上大下小)。

CALL指令的步骤:首先是将返回地址(也就是call指令要执行时EIP的值)压入栈顶,然后是将程序跳转到当前调用的方法的起始地址。即一共执行push和jump指令。(入栈,跳转)

RET指令则是将栈顶的返回地址弹出到EIP,然后按照EIP此时指示的指令地址继续执行程序。(弹栈,执行)

LEAVE指令是将栈指针指向帧指针,然后POP备份的原帧指针到%EBP。
Leave等价于:

movl %ebp %esp
popl %ebp
posted @ 2020-02-27 21:18  friedCoder  阅读(548)  评论(0)    收藏  举报