ARM (二) arm指令分类及其寻址方式
来源:互联网 发布:提花组织软件 编辑:程序博客网 时间:2024/05/20 10:13
ARM
一.ARM指令长度及数据类型
- ARM微处理器的指令长度可以是32位(ARM状态下),也可以是16位(在Thumb状态下)
- ARM微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,字需要4字节对齐(地址低两位为0),半字需要2字节对齐(地址的最低位为0)
- 程序的启动都是从ARM指令集开始, 所有的ARM指令集都可以是有条件执行的.
二. ARM汇编指令格式
- {cond}: 指令执行的条件编码, 如EQ,NE
- <opcode>: 指令操作符编码,如LDR, STR
- {S}: 决定指令的执行是否影响CPRS的值
- <Rn>:包含第一个源操作数的寄存器编码
- <Rd>: 目标寄存器编码
- <shifter_operand>:第二个源操作数
ARM指令语法格式中,<>中的内容是必需的, 而{}中的内容是可选的
三. ARM指令的条件码域
- 大多ARM指令都可以条件执行, 也就是根据CPSR中条件码的状态决定是否执行该指令.
- 只有在CPSR的条件码标志满足指定的条件时,带条件码的指令才可以执行,否则被忽略(相当于一条空操作NOP指令)
- 每一条ARM指令编码中包含4位的条件码.位于指令编码的最高4位[31:28]
四. ARM指令的条件码域
五. ARM寻址方式
- 立即寻址:操作数本身就是指令中给出.
例如: ADDR0,R0,#1 R0<-R0+1 ADDRO,R0,#0x3f R0<-R0+0x3f - 寄存器寻址:利用寄存器中的数值作为操作数.
例如: ADD R0,R1,R2 R0<-R1+R2 - 寄存器间接寻址: 以寄存器中的值作为操作数的地址,而操作数存放在存储器中.
例如: ADD R0,R1,[R2] R0<-R1+[R2] LDR R0, [R1] R0<-[R1] STR R0,[R1] [R1]<-R0 - 基址变址寻址: 将寄存器的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址
例如: LDR R0,[R1,#4] R0<-[R1+4] LDRR0,[R1,#4] R0<-[R1+4],R1<-R1+4 LDR R0,[R1],#4 R0<-[R1],R1<-R1+4 - 多寄存器寻址:一条指令可以完成多个寄存器值得传送.
例如: LDMIA R0,{R1,R2,R3,R4}R1<-[R0],R2<-[R0+4],R3<-[R0+8],R4<-[R0+12] - 相对地址:基地址为程序计数器PC的当前值,偏移量为目的地址和现行地址之间差的基址变址寻址,将PC的值与偏移量相加之后的得到的操作数的有效地址.
六. 伪指令集
0 0
- ARM (二) arm指令分类及其寻址方式
- ARM指令寻址方式
- ARM指令寻址方式
- ARM指令寻址方式
- ARM 指令寻址方式
- ARM指令寻址方式
- 嵌入式系统--ARM指令格式及其寻址方式
- arm指令编码格式和语法格式及其寻址方式
- ARM指令的寻址方式
- ARM指令的寻址方式
- arm 指令的寻址方式
- ARM指令的寻址方式
- ARM 指令的寻址方式
- ARM指令的寻址方式
- ARM汇编指令(ARM寻址方式、汇编指令、伪指令)
- ARM汇编指令(ARM寻址方式、汇编指令、伪指令
- arm v8汇编指令
- arm学习笔记二(arm寻址方式)
- 学习心得:《十个利用矩阵乘法解决…
- 计算几何:正多边形的滚动与旋轮线…
- ACM:计划一个公司聚会 (大一时头疼…
- ACM:动态规划题 poj 1015
- ARM (一) arm寄存器
- ARM (二) arm指令分类及其寻址方式
- ARM (三) arm中C/C++及汇编语言的…
- ACM: 动态规划题 poj 2033 (博客好…
- ACM: 动态规划题 poj 1036 问题简…
- ACM: 划分树 poj 2104
- ACM: 划分树 poj 2761 在poj2104基…
- ACM: 最小堆 poj 2227 最小堆 fro…
- ACM: 最小堆 poj 2274 思路清晰, …
- ACM: 线段树 poj 2352