• 函数调用的arm汇编实现


    看《ARM System Developer's Guide: Designing and Optimizing System Software》中5.5节function call,讲的不是很具体

    发现网上的这份资料讲解非常好,以arm64为target,言简意赅,下面是目录

    (1) Calling and returning
    How does caller function jump to callee function?
    How does callee function jump back to the right place in caller function?

    (2) Passing arguments
    How does caller function pass arguments to callee function?

    注释:这里没有讲到 多个参数传递(参数个数大于某个数量,因为arm传参标准规定,只能用寄存器的几个作为参数传递,参数再多,就需要用另外的机制了)

    和 结构体传递(将多个相关的参数封装成结构体,然后传结构体的地址,从而就可以不使用前面说的 多个参数传递行为)

    (3) Storing local variables
    Where does callee function store its local variables?

    (4) Returning a value
    How does callee function send return value back to caller function?
    How does caller function access the return value?

    (5) Optimization
    How do caller and callee function minimize memory access?

    pdf链接:https://www.cs.princeton.edu/courses/archive/spr19/cos217/lectures/15_AssemblyFunctions.pdf

    pdf内容如下

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Linux日常之命令sort
    Linux日常之命令sed
    Linux日常之命令grep
    Linux日常之命令awk
    Linux日常之命令tee
    Linux日常之数据重定向
    Hibernate打印SQL及附加参数
    使用D3 Geo模块画澳大利亚地图
    基于Spring-WS的Restful API的集成测试
    做项目时需要考虑的安全性问题
  • 原文地址:https://www.cnblogs.com/midhillzhou/p/16020365.html
Copyright © 2020-2023  润新知