美文网首页
Chapter 18 Runtime Environment

Chapter 18 Runtime Environment

作者: 再凌 | 来源:发表于2020-03-02 17:22 被阅读0次

    C语言转化为汇编语言

    1. 初始化static变量
    2. 函数

    函数部分分成三层: 前置操作,内容主题和清理操作。前之操作负责开辟内存(例如栈)。首先link将栈和函数挂钩,然后存储一些信息----使用了哪些寄存器。
    变量声明不会产生任何语句,除非初始化了。
    如果寄存器数量不够的时候,后续变量就只能被放入内存中(有一个寄存器存放了指向这些地址的指针)
    清理操作负责清理栈等内容

    3. 函数调用

    首先会根据调用的函数的需要的参数的逆序将参数放入栈中,即使传入了额外参数,被调用函数也不会使用。(反之,如果多传入了参数,那么被调用函数将错误接受参数)

    4. 函数返回

    首先将所有之前保存的栈都恢复出来,如果calling函数有赋值的话,则从寄存器中取出 return 的值

    C语言调用汇编的注意事项

    1. 保存所有的寄存器内容
    2. 将需要传入的参数逆序压栈
    3. 如果汇编要返回值,应当放入某个临时寄存器
    4. return 之前,清空所有栈

    调优

    使用profile程序观察每一个函数总使用时长和被调用次数,找到最容易优化的部分。
    小函数但是被调用多次的可以考虑使用汇编重构,因为汇编没有那么多的 prologue 和 epilogue

    相关文章

      网友评论

          本文标题:Chapter 18 Runtime Environment

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