第三讲 ARM微处理器的指令系统

合集下载

第3章ARM的指令系统PPT课件

第3章ARM的指令系统PPT课件

;R0的值送R2
ADD R4,R3,R2
;R2加R3,结果送R4
CMP R7,R8
;比较R7和R8的值
R2 0xAA R1 00xxA5A5
MOV R1,R2
10
3.1.1 数据处理指令寻址方式
3.寄存器移位寻址方式 寄存器的值在被送到ALU之前,可以事先经过桶形移位
寄存器的处理。预处理和移位发生在同一周期内,所以 有效地使用移位寄存器,可以增加代码的执行效率。
如果在数据处理指令后使用S前缀,指令的执行结果将会 影响CPSR中的标志位。
25
ARM数据处理指令——数据传送
注:当后缀S时,这些指令根据结果更新标志N和Z,在计算Operand2时更新标 志C,不影响标志V。
ARM数据处理指令——算术运算
ARM数据处理指令——逻辑运算指令
28
ARM数据处理指令——比较指令
支 没有适合DSP处理的乘加指令 运算指令能够访问存储器
3.1 ARM处理器的寻址方式
3.1.1 数据处理指令寻址方式 数据处理指令寻址方式分类:
(1)立即数寻址方式; (2)寄存器寻址方式; (3)寄存器移位寻址方式。
7
3.1.1 数据处理指令寻址方式
1.立即数寻址方式
ARM 指令不能包含一个 32位的立即数常数
;送0到R0
ADD R3,R3,#1 ;R3的值加1
CMP R7,#1000 ;R7的值和1000比较
9
3.1.1 数据处理指令寻址方式
2.寄存器寻址方式
寄存器的值可以被直接用于数据操作指令,这种寻址方 式是各类处理器经常采用的一种方式,也是一种执行效 率较高的寻址方式,如:
MOV R2,R0

《汇编语言程序设计 —基于ARM体系结构 (第4版)》教学课件—03ARM指令系统

《汇编语言程序设计 —基于ARM体系结构 (第4版)》教学课件—03ARM指令系统
是地址基址Rn,是4位[19:16],为R0~R15共16个 寄存器编码;第4个
域是目标或源寄存器Rd,是4位[15:12],为R0~ R15共16个寄存器编
码;第5个域是地址偏移或操作寄存器、操作数 区[11:0]。
• 3.汇编指令格式
用助记符表示的ARM指令一般格式如下:
<opcode> {<cond>} {S}<Rd>,<Rn> {, <OP2>}
分析:第1条指令不带条件标志(无条件AL),指令的执行不受条件标 志 位的影响,完成加法运算:将R3的值加1存入寄存器R4。第2 条 ADD 指令加上后缀EQ变为ADDEQ表示“相等则相加”,即当 CPSR中的Z标 志置位时该指令执行,否则不执行。第3条指令的执行也不受 条件标志 的影响,但是由于附带了后缀S,这条指令执行的结果将影响 CPSR中 条件标志位的值。
• S 周期通常是最小长度,但有时也会被伸展成 N 周期的长度,如从 一个内存“行”的最后一个字移动到下一行的第一个字的时候。
• I 周期和 C 周期总是最小长度。
• 例如:在8MHz的ARM微处理器中,一个 S 周期是125ns,而一个 N 周期 是 250ns。应当注意到这些时序不是 ARM 的属性,而是内存系统 的属性。例如,一个 8MHz的ARM微处理器可以与一个给出125ns 的 N 周期的 RAM 系统相连接。处理器的速率是 8MHz 只是简单 的意味着如果你使任何类型的周期,在长度上小于 125ns 则它不 保证能够工作。图3-2显示一种ARM存储器周期时序。
图3-1程序设计语言的层次结构
• 为了提高程序设计的效率,人们提出了汇编语言的概念。将机器码用 指令助记符表示,这样就比机器语言方便得多。不过,在使用汇编语 言后,虽然编程的效率和程序的可读性都有所提高,但汇编语言同机 器语言非常接近,它的书写风格在很大程度上取决于特定计算机的机 器指令,所以它仍然是一种面向机器的语言。

ARM的指令系统 ppt课件

ARM的指令系统  ppt课件

;读取R1地址上的存储器单元内容,即R0←[R1],无条件执行
Lable
;跳转指令B,执行条件EQ,即相等则程序跳转到Lable处
R1,R1,R2 ;加法指令,R1 + R2→R1,即R1 + R2的结果送给R1
R1,R1,#1 ;加法指令,R1 + 1→R1,并影响状态寄存器(S)
第3条指令的R2和第4条指令的#1都是第二操作数。 第二操作数可以是:
和逻辑运算的单纯移位操作,操作数乘以2n可以 用左移n位来实现 ④ 当PC(R15)用作目的寄 存器时,可以实现程序跳转。如“MOV PC, LR”,所以这种跳转可以实现子程序调用及从子 程序返回,代替指令“B,BL” ⑤ 当PC作为目标 寄存器且指令中S位被设置时,指令在执行跳转 操作的同时,将当前处理器模式的SPSR寄存器 的内容复制到CPSR中。这种指令“MOVS PC LR”可以实现从某些异常中断中返回。
ppt课件
19
2.6 其他后缀
④ 索引后缀与堆栈后缀 索引后缀包括IA、IB、DA、DB; 堆栈后缀包括FD、ED、FA、EA。 这些后缀用于多寄存器加载/存储指令。
⑤ T后缀 T后缀含义是:指令在特权模式下对存储器的访问,将被存储器看成是 用户模式的访问。 T后缀一般只用在字传送和无符号字节传送中。
SUB R0,R0,#1 ;将R0减1,结果放入R0 MOV R0,#0xFF ;将立即数0xFF装入R0寄存器
ppt课件
7
2.2 寄存器寻址
寄存器寻址是指:操作数的值在寄存器中,指令中的地址码字段 指出的是寄存器的编号,指令执行时直接取出寄存器值来操作。
例:寄存器寻址举例
MOV R1, R2
;将R2的值存入R1中

第3章 ARM920T指令系统

第3章  ARM920T指令系统
36
⑶ 对寄存器Rm内容进行移位,结果 作为Operand2的值
图3.3
37
桶形移位器
Rn 未 预 处 理 预 处 理 Rm
桶形移位器
结果N
ALU
Rd
38
① 使用指令中bit[11:7]指定的移位量对Rm移位
· 逻辑左移(LSL) 图3.4 逻辑左移(LSL #6)
39
· 逻辑右移(LSR)
26
3.2.3 数据处理指令
ARM数据处理指令可以分为三类:
1. 数据传送指令(如MOV和MVN)、 2. 算术逻辑操作指令(如ADD、SUB或AND等 ) 3. 比较指令(如CMP和TST等)。

数据处理指令只能对寄存器的内容进行 操作,不允许对存储器中的数据进行操作 ,也不允许指令直接使用存储器的数据或 在寄存器与存储器之间传送数据。 27
3


ARM920T支持指令长度为32位的ARM指 令集和指令长度为16位的Thumb指令集。 ARM920T处理器总是从ARM状态开始, 必须用BX指令明确地转换到Thumb状态 。
4
3.1 ARM指令集概述
3.1.1 ARM指令集概述 ⒈ ARM指令分组 ⑴ 分支指令 ⑵ 数据处理指令 ⑶ 状态寄存器访问指令 ⑷ 单个寄存器装入或存储指令 ⑸ 块数据装入或存储指令 ⑹ 协处理器指令


对于数据传送指令MOV和MVN,指令 中指定的目的寄存器内容被覆盖,如果 目的寄存器指定了PC,如MOV PC, R14,则可以实现程序的转移。 数据传送指令可以实现寄存器到寄存器 ,立即数到寄存器的传送。
28



算术逻辑操作指令通常对指定的两个寄存器 (或1个寄存器、1个立即数)进行操作,结果 存到第3个寄存器,允许选择修改或不修改 CPSR中的条件码标志。 比较指令TEQ、TST、CMP和CMN,通常对 指定的两个寄存器(或1个寄存器,1个立即数 )进行比较,比较结果不保存到寄存器,只影 响CPSR中的条件码标志。 上述指令通常允许对指定的操作数进行移位操 作。

嵌入式微处理器系统及应用-Chapter3 ARM嵌入式微处理器指令集概览68页PPT

嵌入式微处理器系统及应用-Chapter3 ARM嵌入式微处理器指令集概览68页PPT
嵌入式微处理器系统及应用-Chapter3 ARM嵌入式微处理器指令集概览
11、获得的成功越大,就越令人高兴 。野心 是使人 勤奋的 原因, 节制使 人枯萎 。 12、不问收获,只问耕耘。如同种树 ,先有 根茎, 再有枝 叶,尔 后花实 ,好好 劳动, 不要想 太多, 那样只 会使人 胆孝懒 惰,因 为不实 践,甚 至不接 触社会 ,难道 你是野 人。(名 言网) 13、不怕,不悔(虽然只有四个字,但 常看常 新。 14、我在心里默默地为每一个人祝福 。我爱 自己, 我用清 洁与节 制来珍 惜我的 身体, 我用智 慧和知 识充实 我的头 脑。 15、这世上的一切都借希望而完成。 农夫不 会播下 一粒玉 米,如 果他不 曾希望 它长成 种籽; 单身汉 不会娶 妻,如 果他不 曾希望 有小孩 ;商人 或手艺 人不会 工作, 如果他 不曾希 望因此 而有收 益。-- 马钉路 德。
E。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃

ARM-指令系统

ARM-指令系统
——就是以寄存器中的值作为操作数的地址,而操作数本 身存放在存储单元中。例如以下指令:
LDR
R0,[R1]
STR R0,[R1]
;R0←[R1] ;[R1]←R0
第一条指令将以R1的值为地址的存储单元中的内容加载到寄
存器R0中。
第二条指令将R0的内容存储到以R1的值为地址的存储单 元中。
R1—— 基址寄存器 R1的内容——基地址
3) V6版本还支持多微处理器内核。
2022/1/16
第10页,共135页。
3.2 ARM 微处理器指令格式
1. ARM指令特点
1)所有指令都是32位的。 (1) 大多数指令都在单周期内完成。 (2) 所有指令都可以条件执行。 (3) ARM指令为load/store类型。 (4) 基本指令仅36条,分成五类。 (5) 有9种寻址方式。
指令编码格式如下:
ARM指令的语法格式如下:
<opcode>{<cond>}{S} <Rd>,<Rn>{,<opcode2>}
其中,符号“<>”内的项是必须的,符号“{}”内的项是可选
的。
2022/1/16
第16页,共135页。
<opcode>是指令操作码,是必须的,如ADDS, SUBNES等。 {<cond>}为指令执行条件码,是可选的,如EQ,NE等,如 果不写则使用默认条件AL(无条件执行)。 S 为是否影响CPSR寄存器的值,书写时影响CPSR,否则不 影响。 Rd 为目标寄存器编码。 Rn 为第一个操作数的寄存器编码。 operand2 为第二个操作数。
填充。
31
0
C
SUB R3,R2,R1,ROR #2 ;R3←R2+(R1循环右移2位)

ARM指令系统及程序设计基础

1第3章ARM 指令系统与程序设计3.1 ARM 微处理器的指令集概述3.2 ARM 指令的寻址方式3.3 ARM 指令集3.4 Thumb 指令及应用3.5 ARM 程序设计基础<23.1 ARM 微处理器的指令集概述¾ARM 微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。

¾ARM 微处理器的指令集可以分为数据处理指令、分支指令、加载/存储指令、程序状态寄存器(PSR )处理指令、协处理器指令和异常产生指令六大类。

¾每个ARM 指令都是32 位,Thumb 指令为16位。

<3条件执行¾大多数指令是可以条件执行的,条件码是跟在指令后面的2个字母,缺省条件是AL (Always Execute ),即无条件执行,例如:CMP R0,R1BEQ equal MOVGT R2,R1¾条件执行减少了分支指令的数目,相应地减少了指令流水线排空的次数,从而改善了执行代码的性能。

¾条件标志位在CPSR 中,即:N Z C V Q指令位图条件代码0000xxxx xxxxxxxx xxxxxxxx xxxxxxxx 0EQ(等于,Equal) , Z==10001xxxx xxxxxxxx xxxxxxxx xxxxxxxx 1NE(不等于,Not Equal) , Z==00010xxxx xxxxxxxx xxxxxxxx xxxxxxxx 2CS|HS(无符号大于或等于),C==1 0011xxxx xxxxxxxx xxxxxxxx xxxxxxxx 3CC|LO(无符号小于),C==0 0100xxxx xxxxxxxx xxxxxxxx xxxxxxxx 4MI(MInus ,结果为负) ,N==10101xxxx xxxxxxxx xxxxxxxx xxxxxxxx 5PL(PLus ,结果为正) ,N==00110xxxx xxxxxxxx xxxxxxxx xxxxxxxx 6VS(oVerflow Set),V==1 0111xxxx xxxxxxxx xxxxxxxx xxxxxxxx 7VC(oVerflow Clear),V==01000xxxx xxxxxxxx xxxxxxxx xxxxxxxx 8HI(无符号大于) ,C==1 &&Z==01001xxxx xxxxxxxx xxxxxxxx xxxxxxxx 9LS(无符号小于等于) ,C==0 || Z==11010xxxx xxxxxxxx xxxxxxxx xxxxxxxx A GE(有符号大于等于) ,N=V 1011xxxx xxxxxxxx xxxxxxxx xxxxxxxx B LT(有符号小于) ,N!=V1100xxxx xxxxxxxx xxxxxxxx xxxxxxxx C GT(有符号大于) ,N=V && Z==01101xxxx xxxxxxxx xxxxxxxx xxxxxxxx D LE(有符号小于等于) ,N!=V || Z==11110xxxx xxxxxxxx xxxxxxxx xxxxxxxx E AL(总是,Always), TRUE 1111xxxx xxxxxxxx xxxxxxxx xxxxxxxxFNV(从不,Never), FALSE指令格式<5C 语言:while(a!=b) { if (a>b) a -=b; else b -=a; }条件执行示例:求最大公约数;部分使用条件指令;设R1,R2内容分别为a,b loop:CMP R1, R2BEQ done BLT lessthan SUB R1,R1,R2B loop Lessthan:SUB R2,R2,R1B loop Done:……;全部使用条件指令;设R1,R2内容分别为a,b loop:CMP R1, R2SUBGT R1,R1,R2SUBLT R2,R2,R1BNE loop Done:……<63.2 ARM 指令的寻址方式¾立即寻址ADD R0,R0,#0x3f ;R0←R0+0x3f; #&…#%…¾无直接寻址ldr r2, [0x41000000];R2←0x41000000¾寄存器寻址ADD R0,R1,R2;R0←R1+R2¾寄存器间接寻址LDR R0,[R1];R0←[R1]ADD R0,R1,[R2];R0←R1+[R2]¾相对寻址:跳转指令采用了相对寻址方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档