微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > arm 多寄存器存取使用

arm 多寄存器存取使用

时间:11-20 来源:互联网 点击:
老是忘记一些指令的用法... ... 索性记下来,便于以后再查。就当是学习笔记了。

寄存器和堆栈寻址的用法:

寄存器寻址: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]

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top