编码表如下:
ARM寻址方式
立即寻址 寄存器寻址 寄存器间接寻址 基址加偏址寻址 堆栈寻址 块拷贝寻址 相对寻址
立即寻址
立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操 作数本身就在指令中给出,只要取出指令也就取到了操作
数,这个操作数被称为立即数,对应的寻址方式也就叫做
立即寻址。例如以下指令:
• 例如:
SMLAL R4,R,3,R2,R1
Load/Store指令
•ARM的数据存取指令Load/Store是唯一用于寄存器 和存储器之间进行数据传送的指令。ARM指令集中有 三种基本的数据存取指令:
单寄存器的存取指令(LDR,STR) 多寄存器存取指令(LDM,STM)
读写字节,半字
• 字节存取 • STRB , LDRB • STRSB, LDRSB (带符号)
LDMI B LDMED
STMI A LDMI A STMEA LDMFD
先减
减值
LDMDB STMDB LDMEA STMFD
后减
LDMDA LDMFA
STMDA STMED
• LDMIA R0!, {R2-R9} • STMIA R1,{R2,R9}
相对寻址
与基址变址寻址方式相类似,相对寻址以程序 计数器PC的当前值为基地址,指令中的地址标号 作为偏移量,将两者相加之后得到操作数的有效 地址。以下程序段完成子程序的调用和返回,跳 转指令BL采用了相对寻址方式:
ARM指令系统
ARM指令集特点
•ARM指令都是是32位的。 •具有第一操作数、第二操作数、目的操作数 •使用多寄存器 •所有的ARM指令集都可以是有条件执行的。 •条件标志影响位 •程序的启动都是从ARM指令集开始。