0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM架构:函数调用参数超过四个的传递方法

如意 来源:CSDN 作者:CaspianSea 2020-06-22 14:36 次阅读

众所周知,ARM架构下,函数参数是通过 r0~r4寄存器传递的;但是如果参数超过四个,就要借助于栈了。

下面以一个例子说明。

ARM架构:函数调用参数超过四个的传递方法

main()的汇编如下:

ARM架构:函数调用参数超过四个的传递方法

这个时候(执行到箭头指向的位置),栈的状态如下:

ARM架构:函数调用参数超过四个的传递方法

函数 func的汇编如下:

ARM架构:函数调用参数超过四个的传递方法

此时,栈状态如下:

ldr r3, [r11, #4]

上面这一句汇编代码就是从栈上取回保存的第5个参数的值。

ARM架构:函数调用参数超过四个的传递方法

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9042

    浏览量

    366734
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62413
  • 堆栈
    +关注

    关注

    0

    文章

    182

    浏览量

    19728
收藏 人收藏

    评论

    相关推荐

    C函数调用机制与栈帧原理详解

    当一C函数调用时,函数参数如何传递、堆栈指针如何变化、栈帧是如何被建立以及如何被消除的,一
    发表于 06-08 10:49 1211次阅读
    C<b class='flag-5'>函数</b><b class='flag-5'>调用</b>机制与栈帧原理详解

    linux内核系统调用参数传递

    与普通函数一样,系统调用通常需要一些输入/输出参数,这些参数可能包括实际值(即数字)、用户模式进程地址空间中的变量地址,甚至包括指向用户模式函数
    的头像 发表于 12-20 09:32 1430次阅读

    C函数与汇编函数之间参数及返回值传递方法

    做了定义,明确了它们在函数中的职责:图 8AAPCS关于ARM寄存器的定义函数调用时的规则如下:1. 父函数与子
    发表于 09-30 13:34

    ARM函数调用参数传递规则(转载),记录一下

    之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器R0传递第一参数,R1传递
    发表于 03-31 10:44

    ARM系统在函数调用的时候参数是通过哪种方式传递

    中断与异常有何区别?ARM系统在函数调用的时候参数是通过哪种方式传递的?
    发表于 12-24 06:21

    ARM函数调用过程说明

    ARM函数调用默认4参数用R0-R4传递,大于4
    发表于 04-26 10:05

    汇编代码中对C函数调用时如何进行参数传递以及如何从C函数正确返回呢

    参数传递以及如何从C函数正确返回不同于x86的参数传递规则,ATPCS建议函数的形参不
    发表于 05-07 10:02

    matlab自定义函数调用方法

    matlab自定义函数调用方法 命令文件/函数文件+ 函数文件 - 多
    发表于 11-29 13:14 88次下载

    java方法参数传递简析

    参数传递方法中时,参数的值就是该对象的引用一副本。指向同一对象,对象的内容可以在被
    发表于 09-27 17:03 0次下载
    java<b class='flag-5'>方法</b><b class='flag-5'>参数</b><b class='flag-5'>传递</b>简析

    高效的C编程之函数调用

    指令BL或MOV pc,lr一般只需要6指令周期(ARM7上)。 在函数的入口和出口使用多寄存器加载/存储指令LDM和STM(Thumb指令使用PUSH和POP)提高函数体的执行效率
    发表于 10-17 16:49 6次下载
    高效的C编程之<b class='flag-5'>函数</b><b class='flag-5'>调用</b>

    函数参数传递的原理

    参数传递,是在程序运行过程中,实际参数就会将参数传递给相应的形式参数,然后在
    的头像 发表于 03-02 11:41 7300次阅读
    <b class='flag-5'>函数</b><b class='flag-5'>参数</b><b class='flag-5'>传递</b>的原理

    C语言函数调用的形式及过程

    C语言函数调用时的数据传递调用有参函数时,主调函数和被调
    的头像 发表于 03-10 14:28 1606次阅读

    网络系统调用网络套接字入口函数

    调用的应用层接口函数,第二参数是一指针,指向具体被调用
    的头像 发表于 07-24 11:02 446次阅读

    Arm64程序调用通用寄存器的使用方法

    下面是Arm64程序调用标准规定的通用寄存器的使用方法参数寄存器(X0-X7) 函数参数数量
    的头像 发表于 07-28 11:28 2530次阅读
    <b class='flag-5'>Arm</b>64程序<b class='flag-5'>调用</b>通用寄存器的使用<b class='flag-5'>方法</b>

    vlookup函数四个参数含义

    VLOOKUP函数是一种用于在Excel中查找和提取数据的功能强大的函数。它的四个参数含义分别是:查找值、查找范围、返回列索引和区域或表标志。 首先,让我们来详细了解这
    的头像 发表于 12-01 09:57 6935次阅读