汇编七

作者: Flonger | 来源:发表于2017-07-21 22:06 被阅读21次

    函数的局部变量

    • 拿参数是bp+

    • 拿局部变量是bp-

    • 平栈是先把bp赋给sp

    栈越界

    • 超过三次以上的循环就避免使用递归

    保护寄存器

    • 保护通用寄存器
    push ax
    push bx
    push cx
    push dx
    .....
    随便玩儿
    业务逻辑代码
    .....
    pop dx
    pop cx
    pop bx
    pop ax
    
    保护寄存器
    • 保护BP寄存器

    在函数调用一开始就保护bp

    push bp
    mov bp,sp
    .
    .
    .
    mov sp,bp
    pop bp
    ret
    
    保存bp寄存器

    函数的调用流程

    1.push参数(64位cpu 随意使用寄存器)
    2.call指令调用(降下一条指令地址入栈)
    3.保护bp,将sp赋值给bp
    4.提升sp指针,作为局部变量空间(sp - n)
    5.保护外部用到的寄存器
    6.业务逻辑代码
    7.恢复通用寄存器
    8.恢复sp(sp指向bp/sp + n)
    9.恢复bp(pop bp)
    9.返回 ret

    以上

    相关文章

      网友评论

          本文标题:汇编七

          本文链接:https://www.haomeiwen.com/subject/kwtykxtx.html