ARM架构过程调用标准AAPCS(学习)

2023-09-18 06:04:05

AAPCS是ARM架构的处理器规定的一些标准。

  1. 参数和返回值传递,对于简单的情况,输入参数由R0-R3分别用来记录第1到4个参数。当传递的参数超过4个时,就需要借助栈来保存参数。函数的返回值通常保存在R0中,若返回值为64位,R1也用来保存返回值。
  2. 函数调用中的寄存器用法。函数或子程序应该保持R4-R11、R13和R14的数值。若这些寄存器在函数或子程序执行期间被修改,则其函数应该保持在栈中并在返回调用代码前恢复。这几个寄存器也称作“被调用者保存寄存器”,也就是需要被调用者(例如子函数,中断等)进行保存的寄存器。而对于R0-R3、R12、则属于调用者保存寄存器,这几个寄存器是需要调用者做保存工作。在发生异常或中断啊时,R0-R3、R12、SP、PC会硬件自动进程压栈。
  3. 链接寄存器LR用于函数或子程序调用时返回地址的保存,若某函数需要调用另外一个函数或子程序,则首先将LR的数值保存到栈中,否则,当执行了函数调用后,LR的当前值就会丢失。

在这里插入图片描述
在这里插入图片描述
返回值通过R0传递。再看看LR如何使用的呢,m=sum(1,2);的下一条语句的地址是0x8000536,进入sum子函数后,这个地址被保存到了LR中(第二张图),LR的实际保存的是0x8000537,这是因为LR最低位置1表示是thumb状态。

更多推荐

Python 3.11的10个高效新特性

1、模式匹配Python3.11引入了模式匹配,可以简化复杂的条件逻辑。下面是一个使用模式匹配来处理不同类型数据结构的例子:defprocess_data(data):matchdata:case0:print("Receivedzero")case[x,y]:print(f"Receivedalist:{x},{y}

基于Qt5的计算器设计

Qt5的信号与槽✨描述:信号槽是Qt框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式(发布-订阅模式)。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信

Java基础常考知识点(基础、集合、异常、JVM)

Java基础常考知识点基础JDK、JRE、JVM之间的区别hashCode()与equals()之间的关系String、StringBuffer、StringBuilder的区别泛型中extends和super的区别==和equals⽅法的区别重载和重写的区别深拷⻉和浅拷⻉什么是字节码?采⽤字节码的好处是什么?Java

vue3 - 基于 Vue3 + Vite4 + TypeScript5 + Element-Plus + Pinia 技术栈的后台管理系统

GitHubDemo地址在线预览jh-vue3-admin项目地址|在线预览##项目介绍jh-vue3-admin是基于Vue3+Vite4+TypeScript5+Element-Plus+Pinia等最新主流技术栈构建的后台管理系统前端模板。特性:基于vue-admin-template项目升级到vue3版本通过M

Elasticsearch 聚合检索 (分组统计)

1普通聚合分析1.1直接聚合统计(1)计算每个tag下的文档数量,请求语法:GETbook_shop/it_book/_search{"size":0,//不显示命中(hits)的所有文档信息"aggs":{"group_by_tags":{//聚合结果的名称,需要自定义(复制时请去掉此注释)"terms":{"fie

CRC循环冗余码计算

初步条件1.假设数据位有7位,为101001D(初始)=1010012.假设给定约定多项式为4位,为1100,可求得阶级r为len(1100)-1=4-1=3P(多项式)=1100r=len(P)-1=4-1=33.根据流程,计算过程中的数据位需要在末尾加上第二步所求的阶级数数量的阿拉伯数字0。D(计算中的数据位)=1

睿趣科技:现在开抖音小店还来得及吗

抖音,作为一款风靡全球的社交短视频应用,已经在短短几年内改变了人们的生活方式和商业模式。随着抖音上涌现出越来越多的网红和小店,许多人开始考虑是否还有机会在这个领域创业。那么,现在开抖音小店还来得及吗?首先,抖音小店市场仍然充满机会。虽然抖音上已经有数以百万计的小店,但市场仍然远未饱和。消费者的需求多种多样,不断变化,因

腾讯mini项目-【指标监控服务重构】2023-08-22

今日已办50字项目价值和重难点项目价值通过将指标监控组件接入项目,对比包括其配套工具在功能、性能上的差异、优劣,给出监控服务瘦身的建议top3难点减少监控服务资源成本,考虑性能优化如何证明我们在监控服务差异、优劣方面的断言监控服务无感化,支持代码可扩展总监回复小而美的监控服务怎么为之小?怎么为之美?要小要美的关键点是什

vue内置组件Transition的详解

1.Transition定义Vue提供了两个内置组件,可以帮助你制作基于状态变化的过渡和动画:<Transition>会在一个元素或组件进入和离开DOM时应用动画。<TransitionGroup>会在一个v-for列表中的元素或组件被插入,移动,或移除时应用动画。简单地说,就是当元素发生变化,比如消失、显示时,添加动

c#对接webservice接口

方式一:需要填写地址,不能映射每个方法工具类usingSystem;usingSystem.CodeDom.Compiler;usingSystem.CodeDom;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.N

灞桥论“健” 共话康养 灞桥康养论坛取得圆满成功

随着我国“老龄化”的加速,养老资源的匮乏已经成为一个十分严峻的社会问题。同时随着生活水平的大幅提高,康养产业应势而生。涵盖了养老、医疗、体育、养生、旅游等多个领域的康养产业,不仅要为老人们实现“老有所乐、身体健康”的理想,更是要让养老变成“享老”。活力灞桥共话康养9月15日,以“融合康养产业、乐享宜居灞桥”为主题的灞桥

热文推荐