主页 > 数据处理 > 关于ARM汇编,STM和LDM指令的疑问

关于ARM汇编,STM和LDM指令的疑问

2023-12-23 09:54来源:m.sf1369.com作者:宇宇

一、关于ARM汇编,STM和LDM指令的疑问

恩,是这样的意思,ARM中的LDM/STM指令主要用于现场保护,数据复制,参数传送等。

在ARM中,ARM堆栈结构是从高向低压栈的,在初始的时候就像你理解的那样,sp是在高地址,然后按照高编号进行压栈操作。

ldm有相关伪指令,你可以参考下:

LDMFD SP!,{R0-R7,PC}^

对于这条指令,网上的伪代码解释是:

address = SP;

for i = 0 to 7

Ri = Memory[address ,4]

address = address + 4;

SP = address;

二、ARM指令的一般编码格式如下

你这个是ARM7 CPU的指令码格式,早期的ARM架构,是ARMV4T,而且只是其数据处理类指令的指令编码格式(4位编码,配合这其余位,如I位,Rn,Rm,第二操作数等编码位,可以编码出很多条数据处理指令。)。所以说,并不是25-27位没有使用。在其它类型的指令中就有使用25-27,如图2.

                                          图1 ARM7 CPU数据处理指令的编码格式。

                             图2 ARM7 CPU的单字节传输(LAD,STR)指令编码格式

具体请自己查找官方手册,在arm官网可以找到对应资料。

ARM 体系结构参考手册ARMv7-A和ARMv7-R版:DDI0406C_C_arm_architecture_reference_manual.pdf  的A5章节,193页起都是讲这个的。

三、arm两条简单的指令?

LDR指令:将存储器地址为R1的字数据读入寄存器R0

STR指令:将寄存器R0中的字数据写入为以R1为地址的存储器中

(注意存储器和寄存器的区别)

四、arm 指令

下面是LDR指令的编码:

由此可以看到offset部分是占12位的。

学ARM汇编,建议去看英文资料Data Sheets,如ARM7TDMI.pdf。

相关推荐

车联网企业国内有哪些?

数据处理 2023-12-23

注册计量师-请教贴

数据处理 2023-12-19

逆光照片怎么处理

数据处理 2023-12-08