之前在学习如何在C语言中嵌入汇编时有了解到C语言之前的参数调用是使用寄存器

R0传递第一个参数,

R1传递到第二个..

一直到R3传递第四个参数.

但是 实际上有时可能传递的参数非常多,超过8个,或是参数中有浮点数之类,参数也会超过4个寄存器,对于超出的部份并不使用R4,而是使用堆栈的方式.

对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是 汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回

不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须通过堆栈进行传递。

转载于:https://www.cnblogs.com/my-life/p/3483331.html

ARM函数调用时参数传递规则相关推荐

  1. C/C++函数调用时参数传递过程、调用约定与可变参函数的实现

    目录 1.参数传递过程 2.参数压栈顺序从右至左的影响 3.调用约定 3.1.__cdecl C/C++ 缺省调用约定 3.2. __stdcall调用约定 3.3. __fastcall (快速调用 ...

  2. 入门系列:gdb学习——函数调用时参数传递

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

  3. java方法的参数传递规则_java语言参数传递介绍

    java语言参数传递介绍 Java不只是一种编程语言,它是一个完整的平台,拥有庞大的库,将诸如图形绘制.Socket连接.数据库存取等复杂操作进行了最大程度的简化.下面是小编分享的java语言参数传递 ...

  4. 【总结整理】javascript的函数调用时是否加括号

    javascript的函数调用时是否加括号 if(event.preventDefault){ event.preventDefault(); if判断条件里面不要加括号,不加括号是应该以属性形式,i ...

  5. c语言void类型函数调用不可作为,对于void类型函数调用时不可作为

    c语言 void函数怎么调用 当n=123114350时, 结果为:c1=3 c2=1 c3=2 int c1, c2, c3; void fun(lon[void的含义] void的字面意思是&qu ...

  6. 在c语言程序中,数组名做函数调用的实参时,传递给形参的是,若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)...

    若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址. 数组首地址数组第一个元素的地址.数组名字本身就是一个指针,它是一个指针常量,指向的地址不变. 比如定义了一个数组变量,编译器就会在内 ...

  7. 《函数调用时参数、返回值所做的优化处理+编译器NRV优化》

    摘要: c++中创建对象以及销毁对象时,会自动调用对象的构造.析构函数(默认的或自定义的),因此,当我们在c++中调用函数时应该特别注意传参以及返回值时的优化处理,以减少构造.析构函数调用时的开销.同 ...

  8. 参数在c语言中,C语言函数调用和参数传递

    C语言函数被定义以后可以被多次调用,调用的时候可以向它传递参数. C语言函数调用 函数的调用指的就是函数的使用方法. 在程序中使用已经定义的函数,可以使用函数调用表达式,其一般格式如下: 函数名(实参 ...

  9. python函数调用时所提供的参数可以是常量_元组的元素不能修改,一般作为参数传递给函数调用,或是从函数调用除获得参数时,保护其内容不被外部接口修改和破坏。( )_学小易找答案...

    [单选题]设 且 存在,则 ________ [单选题]下列论断中,( )是准确的 [单选题]当常数 --时,曲线 与 相切 [判断题]在列表中可以嵌套另一个列表.( ) [填空题]常用的编程思想有面 ...

最新文章

  1. hadoop系统 hdfs 命令行操作
  2. HTTP API响应数据规范整理
  3. 文字转语音,语音转语音,实际的转化过程
  4. matlab中邮递员问题实例,中国邮递员问题matlab
  5. java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件
  6. JAVA判断输入日期是否合法
  7. bzoj3255 一个关于序列的游戏
  8. 李开复:2018中国最大AI红利?是政策
  9. poj3276(Face The Right Way)反转(开关问题)
  10. Go---第六章:方法(小知识点笔记)
  11. BAT命令手动_自动启动和禁用服务
  12. estore简版商城问题总结
  13. python已知三角形的顶点坐标,求任一顶点角度
  14. HDFS 透明加密使用、Keystore和Hadoop KMS、加密区域、透明加密关键概念和架构、KMS配置
  15. 自然语言处理NLP概论
  16. Oacle锁表,ORA-00054
  17. Apache运行正常,但是localhost却打不开页面
  18. html中精灵图的使用方法,关于CSS Sprites、CSS精灵的详细解析
  19. The Symantec Backup Exec Management Plug-in for VMware
  20. python中完整爬取股票财务信息和公司基本信息含xpath

热门文章

  1. python读文件路径-python获取程序执行文件路径的方法(推荐)
  2. python自学需要多久-怎么自学python,大概要多久?
  3. 使用python用什么软件-python开发工具有哪些(初学python用什么软件)
  4. python能在生活中做什么-一行Python能实现什么丧心病狂的功能?
  5. python面试-Python面试常问的10个问题
  6. python需要基础吗-没有任何基础,要怎么学习Python?
  7. php和python性能-python、node、php、go、java性能对比测试
  8. python爬虫框架排行榜-哪种Python框架适合你?简单介绍几种主流Python框架
  9. python网上编程课程-少儿编程 为你解读Python编程课程
  10. python中国大学排名爬虫写明详细步骤-Python爬虫--2019大学排名数据抓取