call
可以理解为高级语言中函数的调用
使用格式为:
1 | call 标号/地址 |
执行流程:
* 先将下一条指令的偏移地址入栈
* 然后跳转到定位的标号地址执行指令
ret
可以理解为高级语言中的return
官方解释:
ret指令就是讲栈顶的值Pop给IP
栈平衡
编译器为了保证ret之后执行调用栈中预先通过call入栈的下一条指令, 需要将临时push进栈中的局部变量 和参数等进行pop, 从而保持栈sp值恢复原样, 也就是所谓的栈平衡
特点: ip突然上升,而后ip突然恢复
本文为作者原创 转载时请注明出处 谢谢
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站