您的位置 首页 编程

arm 多寄存器存取运用

老是忘记一些指令的用法……索性记下来,便于以后再查。就当是学习笔记了。多寄存器和堆栈寻址的用法:多寄存器寻址:LDMIA,LDMIB,…

老是忘掉一些指令的用法… … 干脆记下来,便于今后再查。就当是学习笔记了。

寄存器和仓库寻址的用法:
寄存器寻址:LDMIA,LDMIB,STMIA,STMIB,LDMDA,LDMDB,STMDA,STMDB;
仓库寻址:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;
指令后缀的解说:
澄清仓库寻址的SP的改变:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;
IA: 每次传送后地址加4;
IB: 每次传送前地址加4;
DA: 每次传送后地址减4;
DB: 每次传送前地址减4;
FD: 满递减仓库;
ED: 空递减仓库;
FA: 满递加仓库;
EA: 空递加仓库。
1、多寄存器寻址:
LDMIA R0!,{R1-R4}
;R1<----[R0]
;R2<----[R0+4]
;R3<----[R0+8]
;R4<----[R0+12]
例如:
一切的示例指令碑文前:
mem32[0x1000C] = 0x04
mem32[0x10008] = 0x03
mem32[0x10004] = 0x02
mem32[0x10000] = 0x01
r0 = 0x00010010
r1 = 0x00000000
r3 = 0x00000000
r4 = 0x00000000
1) ldmia r0!, {r1-r3} 2) ldmib r0!, {r1-r3}
碑文后: 碑文后:
r0 = 0x0010001C r0 = 0x0010001C
r1 = 0x01 r1 = 0x02
r2 = 0x02 r2 = 0x03
r3 = 0x03 r3 = 0x04
2、仓库寻址:
STMFD入栈指令,相当于STMDB
STMFD SP!,{R2-R4}
;[SP-4]<---R4
;[SP-8]<---R3
;[SP-12]<---R2
LDMFD出栈指令,相当于LDMIA
LDMFD SP!,{R6-R8}
;R6<----[SP]
;R7<----[SP+4]
;R8<----[SP+8]

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/264474.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部