1. 首页
  2. 文档大全

第3讲ARM指令集寻址方式

上传者:5****1 2022-07-05 02:56:22上传 PPT文件 967.01KB
第3讲ARM指令集寻址方式_第1页 第3讲ARM指令集寻址方式_第2页 第3讲ARM指令集寻址方式_第3页

《第3讲ARM指令集寻址方式》由会员分享,可在线阅读,更多相关《第3讲ARM指令集寻址方式(68页珍藏版)》请在文档大全上搜索。

1、1TM第第3章章ARM指令集寻址方式指令集寻址方式ARM指令寻址方式可分为四大类:指令寻址方式可分为四大类:数据处理指令寻址数据处理指令寻址Load/Store指令的寻址指令的寻址批量批量Load/Store指令的寻址指令的寻址协处理指令寻址。协处理指令寻址。2TM2内容提要内容提要31 ARM指令的编码格式指令的编码格式32 数据处理指令寻址方式数据处理指令寻址方式33 Load/Store指令寻址指令寻址34 批量批量Load/Store指令寻址方式指令寻址方式35 协处理器指令寻址方式协处理器指令寻址方式3TM331 ARM指令的编码格式指令的编码格式n每条每条ARM指令占有指令占有4个

2、字节,其指令长度为个字节,其指令长度为32位位 cond(bit31:28) 指令执行的条件码指令执行的条件码n几乎所有的几乎所有的ARM指令都可以根据当前程序状态寄存器指令都可以根据当前程序状态寄存器CPSR中标志位的值,有条件地执行。中标志位的值,有条件地执行。nARM指令的条件域指令的条件域有有16种类型。种类型。 4TM4指令条件码指令条件码n0000 EQ 相等相等 Z=1n0001 NE 不相等不相等 Z=0n0010 CS/HS 无符号大于等于无符号大于等于 C=1n0011 CC/LO 无等号小于无等号小于 C=0n0100 MI 负数负数 N=1n0101 PL 非负数非负数

3、 N=0n0110 VS 上溢出上溢出 V=1n0111 VC 没有上溢出没有上溢出 V=0n1000 HI 无符号数大于无符号数大于 C=1且且Z=0n1001 LS 无符号小于等于无符号小于等于 C=0或或Z=1n1010 GE 有符号数大于等于有符号数大于等于 N=1且且V=1 或或 N=0且且V=0 n1011 LT 有符号数小于有符号数小于 N=1且且V=0 或或 N=0且且V=1n1100 GT 有符号数大于有符号数大于 Z=0且且N=Vn1101 LE 有符号数小于有符号数小于/等于等于 Z=1或或N!=Vn1110 AL 无条件执行无条件执行 5TM5一般编码格式一般编码格式n

4、每条每条ARM指令占有指令占有4个字节,其指令长度为个字节,其指令长度为32位位cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 ty

5、pe(bit27:26) 指令类型码指令类型码 根据其编码的不同代表各类型的指令根据其编码的不同代表各类型的指令Type描述描述00数据处理指令及杂类数据处理指令及杂类01Load/Store指令指令10批量批量Load/Store指令及分支指令指令及分支指令11协处理指令与软中断指令协处理指令与软中断指令6TM6一般编码格式一般编码格式n每条每条ARM指令占有指令占有4个字节,其指令长度为个字节,其指令长度为32位位cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 con

6、d(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码 I(bit25) 第二操作数类型码。第二操作数类型码。I=1表示第二操作数是立即数表示第二操作数是立即数I=0表示第二操作数是移位寄存器表示第二操作数是移位寄存器opcode(bit24:21)指令操作码指令操作码 S (bit20)决定指令的操作结果是否影响决

7、定指令的操作结果是否影响CPSR;Rn (bit19:16)包含第一个操作数的寄存器编码;包含第一个操作数的寄存器编码;Rd (bit15:12)目标寄存器编码;目标寄存器编码;Operand2(bit11:0)指令第二个操作数。指令第二个操作数。7TM7nARM汇编指令语法格式:汇编指令语法格式:nS,n例如,指令例如,指令 ADDEQS R1,R2,58TM83.2 数据处理指令寻址方式数据处理指令寻址方式n数据处理指令第数据处理指令第2操作数的构成方式操作数的构成方式n立即数方式立即数方式n寄存器方式寄存器方式n寄存器移位方式寄存器移位方式n具体寻址类型具体寻址类型 n第二操作数为立即数

8、第二操作数为立即数n第二操作数为寄存器第二操作数为寄存器n第二操作数为寄存器移位方式,且移位的位数为一个第二操作数为寄存器移位方式,且移位的位数为一个5位的位的立即数立即数n第二操作数为寄存器移位方式,且移位数值放在寄存器中第二操作数为寄存器移位方式,且移位数值放在寄存器中n第二操作数为寄存器进行第二操作数为寄存器进行RRX移位得到移位得到9TM9具体寻址类型具体寻址类型 n1第二操作数为立即数第二操作数为立即数n汇编语法格式:汇编语法格式:#立即数要以立即数要以“#”号为前缀,号为前缀,16进制数值时以进制数值时以“0 x”表示。表示。n 每个立即数由一个每个立即数由一个8位的常数进行位的常

9、数进行32位循环右移偶数位得到(位循环右移偶数位得到(8位位图),循环右移的位数由一个位位图),循环右移的位数由一个4位二进制的两倍表示。即位二进制的两倍表示。即:n=immed_8进行进行32位循环右移(位循环右移(2*rotate_4)位)位10TM10nAND R1,R2,#0 xff 当处理器处理第二操作数当处理器处理第二操作数0 xff时,因为时,因为0 xff为为8位二进制数,所以处理器就位二进制数,所以处理器就将其直接放进将其直接放进8位位“基本基本”数中,而数中,而4位位“移位移位”数则为数则为0. nAND R1,R2,#0 x104 当处理器处理这条指令的第二操作数当处理器

10、处理这条指令的第二操作数0 x104时,因为此时时,因为此时0 x104已经超过已经超过了了8位二进制数,所以处理器就要将其位二进制数,所以处理器就要将其“改造改造”一下一下: 0 x104 = 0000 0000 0000 0000 0000 0001 0000 0100, 这个数是这个数是0000 0000 0000 0000 0000 0000 0100 0001通过循环右移通过循环右移30位位得到的,因此得到的,因此8位位“基本基本”数中存放数中存放0100 0001,而,而“移位移位”数为数为15。nAND R1,R2,#0 xff000000 当处理器处理这条指令的第二操作数当处理

11、器处理这条指令的第二操作数0 xff000000时,同样对其时,同样对其“改造改造”,0 xff000000 = 1111 1111 0000 0000 0000 0000 0000 0000, 这个数是这个数是 0000 0000 0000 0000 0000 0000 1111 1111通过循环右移通过循环右移8位得位得到的,因此到的,因此8位位“基本基本”数中存放数中存放1111 1111,而,而“移位移位”数为数为4。 11TM11注意:注意: 要用一个要用一个12位的编码来表示任意的位的编码来表示任意的32位数是绝对不可能的,只位数是绝对不可能的,只有在表示数的数量上做限制。有在表示


文档来源:https://www.renrendoc.com/paper/212679093.html

文档标签:

下载地址