过程调用和返回指令AT&T
指令 | 描述 | ||
call label | 过程调用 | ||
call *operand | 过程调用 | ||
leave | 为返回准备栈 | ||
ret | 从过程调用中返回 |
直接调用使用标号间接调用*后加操作指示符
call指令--->将返回地址入栈并跳转到被调用过程的起始处
(返回地址为call后面那条指令的地址因为要执行完被调过程之后到达调用过程继续执行)
ret指令-->从栈中弹出地址并跳转到这个位置
(弹出的地址为call指令入栈的返回地址)
而leave指令可以使栈做好返回准备,
等效于
movl %ebp,%esp
popl %ebp