汇编代码——函数调用原理
2017-07-22 本文已影响72人
番薯大佬
汇编代码中函数的调用过程
- push 参数:64位 CPU 任性使用寄存吕
- call 指令调用:将下一条指令地址入栈
- 保护 bp 寄存器
push bp
- 将 sp 赋值给 bp
mov bp,sp
- 提升 sp 指针(sp 减去值),作为局部变量空间,即分配栈空间
- 保存寄存器
push bx
push cx
push dx
- 业务逻辑:实现功能
- 恢复寄存器
pop dx
pop cx
pop bx
- 恢复 sp 指针(sp 加上值)
- sp 指向 bp
mov sp,bp
- 恢复 bp
pop bp
- ret 返回
ret
注意
- 先 push 入栈的最后 pop 出栈
- 栈指针sp 恢复时有两种方法
- 重指向bp
- 减多少值,就加回多少值