内容简介:arm-linux-gcc -O2 load.c -S1. 子程序通过寄存器R0~R3来传递参数. 这时寄存器可以记作: A0~A3 , 被调用的子程序在返回前无需恢复寄存器R0~R3的内容,2. 在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作: V1~V8 .如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作.在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量
arm-linux-gcc -O2 load.c -S
点击( 此处 )折叠或打开
- exchange :
- @ Function supports interworking .
- @ args = 0 , pretend = 0 , frame = 0
- @ frame_needed = 0 , uses_anonymous_args = 0
- @ link register save eliminated .
- mov r3 , r0 #r0的值存入r3
- ldr r0 , [ r0 , #0 ] #把r0地址指向的值存入r0,r0此时又作为函数的返回值
- str r1 , [ r3 , #0 ] #*x = y;
- bx lr #函数返回
1. 子程序通过寄存器R0~R3来传递参数. 这时寄存器可以记作: A0~A3 , 被调用的子程序在返回前无需恢复寄存器R0~R3的内容, 同时,R0也被用来传递函数的返回值
2. 在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作: V1~V8 .如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作.在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量.
3.寄存器R12用作子程序间scratch寄存器,记作ip; 在子程序的连接代码段中经常会有这种使用规则.
4. 寄存器R13用作数据栈指针,记做SP,在子程序中寄存器R13不能用做其他用途. 寄存器SP在进入子程序时的值和退出子程序时的值必须相等.
5. 寄存器R14用作连接寄存器,记作lr ; 它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则R14可用作其它的用途.
6. 寄存器R15是程序计数器,记作PC ; 它不能用作其他用途.
7. ATPCS中的各寄存器在ARM编译器和汇编器中都是预定义的.
以上所述就是小编给大家介绍的《C语言的ARM实现(一)数据传送指令》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- SendGrid是如何扩展它的邮件传送系统的
- [OC] 开发利器:控制器传送门VCPicker(附demo)
- 【Logisim实验】构建立即数-随机存储器-寄存器的传送
- FydeOS for PC v9.1 发布,新增「系统设置」程序和燧炻传送功能
- 进大厂全靠自学,微软&头条实习生现身说法:我是这样自学深度学习的丨课程传送门
- redis 用scan指令 代替keys指令(详解)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Practical Algorithms for Programmers
Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99
Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!