03 arm程序调用标准(APCS)
来源:互联网 发布:淘宝gxg官方店特别便宜 编辑:程序博客网 时间:2024/05/29 07:52
APCS(arm procedure call standard) arm程序(不管什么语言)的调用标准。 也就是返回值,参数怎么传递。怎样返回调用函数的位置等的一套标准做法. 1). PC寄存器是存放从哪个内存地址上取指令. 程序执行其实一条条的指令进行取指,译码,执行. 程序里调用一个函数,需要等这个被调用的函数主动返回才可以接着执行,而且被调用的函数的返回地址得刚好为调用函数的下一条指令的地址. 如: 指令A b myfunc //当myfunc函数执行完毕返回时, 需要让"pc = 指令B地址"才可以让程序接着执行. 指令B 但在写myfunc函数时,我们根本无法确定是什么时候,哪条指令后被调用,也无法确定返回的地址.所以必须得由调用者在调用此函数时准备好返回的地址,以便myfunc执行完时可返回到正确的地址接着执行. 调用者必须给被调用者准备返回地址,此返回地址按APCS的标准是放在寄存器r14(lr), 被调用执行完成后,只要根据lr寄存里存放的地址返回即可(mov pc, lr). 返回值按标准是存放在r0, 必须在返回前准备好返回值. 函数A ---> 调用函数B 函数B里 ---> 调用函数C 函数A调用函数B时需准备返回地址在lr寄存器里, 函数B调用函数C时又得准备返回地址, 一个工作模式下只有一个lr寄存器,这种情况可以先把lr寄存器里的地址压栈再改变lr寄存器里的地址,以便函数C返回. 2). 传参数. 调用函数时,传的参数从r0寄存器开始存放第1个参数, 直到r3寄存器存放第4个参数. 如还有参数则放入栈里. 被调用的函数会自动从栈里取超出的参数.///////////////////////////////// 16. mov lr, pc 17. b myfunc 18. nop 取指 --> 译码 ---> 执行 16 x x 17 16 x 18 17 16 //当16行指令执行时, pc存放的是18指令的地址//////////////////////////////////bl myfunc // 就是先"mov lr, pc"再"b myfunc"
阅读全文
0 0
- 03 arm程序调用标准(APCS)
- APCS(ARM 过程调用标准)
- APCS (ARM 过程调用标准)
- APCS,ARM 过程调用标准(ARM)
- APCS 简介(ARM 过程调用标准)
- APCS 简介(ARM 过程调用标准)
- 理解APCS-- ARM过程调用标准
- 理解APCS-- ARM过程调用标准
- ARM过程调用标准---APCS简介
- 理解APCS-- ARM过程调用标准
- 理解APCS-- ARM过程调用标准
- ARM过程调用标准---APCS简介
- 理解APCS-- ARM过程调用标准
- 理解APCS-- ARM过程调用标准
- APCS,ARM 过程调用标准(ARM Procedure Call Standard)
- APCS,ARM 过程调用标准(ARM Procedure Call Standard)
- APCS ARM 过程调用标准(ARM Procedure Call Standard)
- APCS,ARM 过程调用标准(ARM Procedure Call Standard) (转)
- 微信h5支付
- 试用IronPython
- C语言实现二叉树的各种遍历及求解深度
- mybatis需要注意的小细节
- vb程序异地发布
- 03 arm程序调用标准(APCS)
- Linux服务器性能数据收集
- 23种设计模式汇总整理
- 在centos6.5中安装gcc-4.8.5
- linux 权限操作
- AsyncTask和Handler两种异步方式的实现和区别比较
- myeclipse过期以后提示过期以后怎么办?!
- Shell编程学习笔记
- Security Linux & Android