嵌入式原理及接口技术课件ch3-第2版-嵌入式系统原理及接口技术.ppt
《嵌入式原理及接口技术课件ch3-第2版-嵌入式系统原理及接口技术.ppt》由会员分享,可在线阅读,更多相关《嵌入式原理及接口技术课件ch3-第2版-嵌入式系统原理及接口技术.ppt(104页珍藏版)》请在文库网上搜索。
1、本章重点本章重点:ARM指令集概述,ARM指令集全部指令编码及条件域;ARM指令,讲述了ARM指令的编码格式、指令含义、汇编格式和使用举例。另外,本章指令编码格式、指令汇编格式请直接看教材。嵌入式系统原理及接口技术(第2版)1nS3C2410A嵌入式微处理器片内使用了ARM920T内核,因此S3C2410A使用ARM920T所支持的指令系统。ARM920T指令系统的指令集结构版本为v4T,ARM920T指令系统含有v4T以上指令集结构版本的基础指令,在v4T以上指令集结构版本的微处理器中都可以运行。nARM920T处理器支持32位寻址空间。嵌入式系统原理及接口技术(第2版)2nARM920T支
2、持指令长度为32位的ARM指令集和指令长度为16位的Thumb指令集。从功能上讲,Thumb指令集是ARM指令集主要部分的一个子集。ARM920T处理器总是从ARM状态开始,必须用BX指令明确地转换到Thumb状态。嵌入式系统原理及接口技术(第2版)33.1 ARM指令集概述 3.1.1 ARM指令集概述 ARM指令分组 分支指令 数据处理指令 状态寄存器访问指令 单个寄存器装入或存储指令 块数据装入或存储指令 协处理器指令 嵌入式系统原理及接口技术(第2版)4 ARM指令的能力 条件执行 寄存器访问 对在线式桶形移位器(barrel shifter)的访问嵌入式系统原理及接口技术(第2版)5
3、 3.1.2 ARM指令集全部指令编码及条件域 1.ARM指令集全部指令编码格式见图3.1。指令编码中的条件域 参见图3.1,指令编码格式中的bit31:28称为条件域。嵌入式系统原理及接口技术(第2版)6 嵌入式系统原理及接口技术(第2版)7n在ARM状态,所有指令都要根据CPSR中的条件码标志和指令中条件域指定的内容,有条件地执行。指令中条件域bit31:28确定在哪一种情况下这条指令被执行。如果C、N、Z和V标志的状态满足指令中条件域编码要求,指令被执行;否则指令被忽略。嵌入式系统原理及接口技术(第2版)8n有15种可能的条件,每一种由2个字符代替,称为条件码助记符后缀(简称条件码助记符
4、),可以附加在指令助记符后,如表3.1所示。n例如在汇编语言中,分支指令B如果附加条件码助记符后缀为EQ,写作BEQ,表示相等(即Z=1)这条指令才执行;如果Z1,则这条指令不被执行,指令被忽略。嵌入式系统原理及接口技术(第2版)93.2 ARM指令本节讲述的内容和先后次序如下:n分支并且转换状态指令(BX);n分支、分支并且连接指令(B、BL);n数据处理指令;n程序状态寄存器传送指令(MRS、MSR);n乘、乘累加指令(MUL、MLA);n长乘、长乘累加指令(MULL、MLAL);嵌入式系统原理及接口技术(第2版)10n单个数据传送指令(LDR、STR);n半字、带符号字节半字传送指令(L
5、DRH、STRH、LDRSB、LDRSH);n块数据传送指令(LDM、STM);n单个数据交换指令(SWP);n软件中断指令(SWI);n协处理器介绍;嵌入式系统原理及接口技术(第2版)11n协处理器数据操作指令(CDP);n协处理器数据传送指令(LDC、STC);n协处理器寄存器传送指令(MRC、MCR);n未定义指令。指令编码格式中的bit31:28为条件域。所有指令都要根据CPSR中的条件码标志和指令中的条件域指定的内容,有条件地执行。为简单起见,以下对各指令介绍时不再重复这部分内容。嵌入式系统原理及接口技术(第2版)12 3.2.1 分支并且转换状态指令(BX)n 分支并且转换状态指令
6、BX,在指令中指定了一个Rn寄存器,将Rn内容拷贝到PC,同时使PC0=0;把Rn0的值送CPSR的T位。如果Rn0=1,则T=1,将处理器状态转换成Thumb状态,把目标地址处的代码解释为Thumb代码;如果Rn0=0,则T=0,将处理器状态转换成ARM状态,把目标地址处的代码解释为ARM代码。嵌入式系统原理及接口技术(第2版)13 指令含义 通过拷贝一个通用寄存器Rn的内容到程序计数器PC,指令实现分支功能。这条指令也允许指令集被转换,当这条指令被执行时,Rn的bit0位确定后续指令代码被译码作为ARM指令或Thumb指令。嵌入式系统原理及接口技术(第2版)14 指令汇编格式 使用举例 【
7、例3.1】处理器从执行ARM指令代码处分支到标号为Goto_THUMB处,并且执行Thumb 指令代码,然后又返回到Back_ARM处,执行ARM指令代码。嵌入式系统原理及接口技术(第2版)15;假定假定处处理器当前正在理器当前正在执执行行ARM指令指令 ADR R1,Goto_THUMB+1;将分支目将分支目标标地址送地址送R1,使,使R1的的bit0=1 BX R1;分支并且分支并且转换为转换为Thumb状状态态 CODE16;汇编汇编以下代以下代码为码为Thumb指令指令Goto_THUMB;分支目分支目标标地址地址标标号号 ;Thumb指令代指令代码码 ADR R2,Back_ARM;
8、将分支目将分支目标标地址送地址送R2,并且,并且R2的的bit0=0 BX R2;分支且分支且转换为转换为ARM状状态态 ALIGN;字字对齐对齐 CODE32;汇编汇编以下代以下代码为码为ARM指令指令Back_ARM;分支目分支目标标地址地址标标号号 ;ARM指令代指令代码码嵌入式系统原理及接口技术(第2版)16 3.2.2 分支、分支并且连接指令(B、BL)n分支指令B使程序分支(转移)到确定的地址处执行程序。n分支并且连接指令BL除了使程序分支(转移)到确定的地址处执行程序外,还要保存返回地址到LR寄存器,即把BL指令的下一条指令的地址送LR。使用BL指令可以实现子程序调用。n上述两条
9、指令分支目标地址处的指令均应该属于ARM指令集,不允许分支到Thumb指令处。嵌入式系统原理及接口技术(第2版)17 指令含义 对于分支指令B,bit23:0是24位带符号的偏移量,将其左移2位,符号位扩展到bit31:26形成一个32位数,与PC相加实现分支。因此指令能在32MB地址范围内实现分支。分支偏移量必须考虑流水线指令预取操作,PC值是当前正在执行指令的地址加8的值。嵌入式系统原理及接口技术(第2版)18n对于分支并且连接指令BL,执行指令会将PC值写入当前寄存器组的连接寄存器R14,写入的PC值是经过调整的、跟在分支并且连接指令后的指令的地址,同时R14的bit1:0被清0。n 使
10、用分支并且连接指令BL可以调用一个子程序,为了从子程序返回,如果R14(LR)在子程序中没有被修改,可以使用MOV PC,R14指令实现返回。嵌入式系统原理及接口技术(第2版)19 指令汇编格式 使用举例【例3.2】使用分支指令使部分代码循环5次。MOV R0,#5;R0值为值为5Loop1 SUBS R0,#1;R0减减1送送R0,设设置置标标志位志位 BNE Loop1;使用了条件使用了条件码码,不,不为为0则则分支到分支到标标号号;Loop1处处嵌入式系统原理及接口技术(第2版)20【例3.3】使用分支并且连接指令调用不同的子程序。CMP R0,#0;比比较较,设设置置标标志位志位 BL
11、EQ SUBEQROG;相等,相等,则调则调用用SUBEQ BLGT SUBGTROG;大于,大于,则调则调用用SUBGT BL SUBLTROG;小于,小于,则调则调用用SUBLT嵌入式系统原理及接口技术(第2版)21 3.2.3 数据处理指令n ARM数据处理指令可以分为三类:数据传送指令(如MOV和MVN)、算术逻辑操作指令(如ADD、SUB或AND等)和比较指令(如CMP和TST等)。n 数据处理指令只能对寄存器的内容进行操作,不允许对存储器中的数据进行操作,也不允许指令直接使用存储器的数据或在寄存器与存储器之间传送数据。嵌入式系统原理及接口技术(第2版)22n对于数据传送指令MOV和
12、MVN,指令中指定的目的寄存器内容被覆盖,如果目的寄存器指定了PC,如MOV PC,R14,则可以实现程序的转移。n数据传送指令可以实现寄存器到寄存器,立即数到寄存器的传送。嵌入式系统原理及接口技术(第2版)23n 算术逻辑操作指令通常对指定的两个寄存器(或1个寄存器、1个立即数)进行操作,结果存到第3个寄存器,允许选择修改或不修改CPSR中的条件码标志。n比较指令TEQ、TST、CMP和CMN,通常对指定的两个寄存器(或1个寄存器,1个立即数)进行比较,比较结果不保存到寄存器,只影响CPSR中的条件码标志。n上述指令通常允许对指定的操作数进行移位操作。嵌入式系统原理及接口技术(第2版)24
13、指令编码格式n指令编码格式见教材图3.2。n图3.2中,第1操作数总是寄存器Rn。Rd称为目的寄存器,TST、TEQ、CMP和CMN指令不送结果到目的寄存器Rd,其他指令产生的结果送Rd。n第2操作数Operand2可以是寄存器Rm的值经过移位产生的32位值,或8位立即数经过循环右移产生的32位的值,指令中bit25的值用来选择Rm或8位立即数。嵌入式系统原理及接口技术(第2版)25n CPSR中的条件码可能被保护或由指令的结果设置,取决于指令中bit20的值。但是对于指令TST、TEQ、CMP和CMN,汇编器产生的指令编码一定会把指令的bit20置1,在执行指令时,由测试结果设置CPSR中的
14、条件码标志。嵌入式系统原理及接口技术(第2版)26 指令含义 各指令含义n 数据处理指令依指令编码格式中bit24:21分为16条指令,包括:数据传送、算术逻辑操作和比较指令。各条指令含义见表3.2。嵌入式系统原理及接口技术(第2版)27 指令对CPSR中条件码标志位的影响n在逻辑操作(AND、EOR、TST、TEQ、ORR、BIC)和数据传送操作(MOV、MVN)指令中,如果S位被置1(并且Rd不是R15),则CPSR中的V标志位不受影响;C标志位由桶形移位器产生的carry out设置;当指令操作结果为全0时Z标志位被设置;N标志位由指令操作结果的bit31的值设置。嵌入式系统原理及接口技
15、术(第2版)28n算术操作(SUB、RSB、ADD、ADC、SBC、RSC、CMP、CMN)指令中,每个操作数被看作32位整数(无符号数或带符号数的2的补码),如果指令中S位被置1(并且Rd不是R15),在发生溢出时,CPSR中的V标志位被设置;C标志位由ALU的bit31产生的进位设置;如果指令操作结果为全0时,Z标志位被设置;N标志位将被设置成指令操作结果的bit31的值。嵌入式系统原理及接口技术(第2版)29 对寄存器Rm内容进行移位,结果作为Operand2的值图3.3嵌入式系统原理及接口技术(第2版)30 使用指令中bit11:7指定的移位量对Rm移位 逻辑左移(LSL)图3.4 逻
16、辑左移(LSL#6)嵌入式系统原理及接口技术(第2版)31 逻辑右移(LSR)图3.5 逻辑右移(LSR#6)嵌入式系统原理及接口技术(第2版)32 算术右移(ASR)图3.6 算术右移(ASR#6)嵌入式系统原理及接口技术(第2版)33 循环右移(ROR)图3.7 循环右移(ROR#6)嵌入式系统原理及接口技术(第2版)34 图3.8 扩展循环右移(RRX)嵌入式系统原理及接口技术(第2版)35n在使用指令中bit11:7指定对Rm的移位量,bit6:5指定移位类型时,指令汇编格式举例见表3.3。嵌入式系统原理及接口技术(第2版)36表3.3 指令bit11:7和bit6:5指定Rm移位量和
17、移位类型举例 指定对Rm的移位量和移位类型指 令 举 例指 令 含 义Rm,LSL#5bit_shift_ImmADD R0,R2,R3,LSL#1 R3的值逻辑左移1位,加R2,和送R0Rm,LSR#5bit_shift_ImmSUB R0,R2,R3,LSR#2R3的值逻辑右移2位,从R2中减去,差送R0Rm,ASR#5bit_shift_ImmMOV R1,R0,ASR#2R0的值算术右移2位,送R1Rm,ROR#5bit_shift_ImmSUB R1,R2,R4,ROR#6R4的值循环右移6位,从R2中减去,差送R1Rm,RRXAND R2,R3,R4,RRXR4的值扩展循环右移,和
18、R3与的结果送R2嵌入式系统原理及接口技术(第2版)37 使用指令中bit11:8指定Rs寄存器,且用Rs中最低字节指定移位量n参见图3.2和图3.3,由指令中bit11:8指定Rs寄存器,移位量保存在Rs寄存器的最低字节,对Rm寄存器的内容进行移位,产生的结果作为Operand2的值。n如果Rs中指定的移位次数为0,那么不改变Rm的内容作为Operand2,并且CPSR中C位的值作为carry out,即C位的值不变。n如果Rs中最低字节指定的移位次数在131之间,进行的移位操作与产生的结果参阅图3.4、3.5、3.6、3.7。嵌入式系统原理及接口技术(第2版)38n如果Rs中最低字节指定的
19、移位次数大于、等于32,产生的结果如下:对LSL,如果移位次数等于32,移位结果Operand2为全0,Rm0作为carry out。对LSL,如果移位次数大于32,移位结果Operand2为全0,carry out为0。对LSR,如果移位次数等于32,移位结果Operand2为全0,Rm31作为carry out。对LSR,如果移位次数大于32,移位结果Operand2为全0,carry out为0。对ASR,如果移位次数大于、等于32,用Rm31填充Operand2各位,用Rm31作为carry out。嵌入式系统原理及接口技术(第2版)39 对ROR,如果移位次数等于32,移位结果Ope
20、rand2等于Rm的值,carry out等于Rm31。对于ROR,如果移位次数大于32,用移位次数重复减32,直到它们的差在132之间,用这个值作为移位次数,移位结果如前述。n对于上述各种情况,carry out的值,均送往CPSR中的进位标志C。n使用Rs指定移位量时,指令中bit6:5指定移位类型,指令汇编格式举例见表3.4。嵌入式系统原理及接口技术(第2版)40表3.4 用Rs指定Rm的移位量和指令中bit6:5指定移位类型举例指定Rm的移位量和移位类型指 令 举 例指 令 含 义Rm,LSL RsADD R0,R1,R2,LSL R3 移位量在R3中,R2逻辑左移,加R1,和送R0R
21、m,LSR RsSUB R0,R1,R2,LSR R4移位量在R4中,R2逻辑右移,从R1中减去,差送R0Rm,ASR RsAND R1,R2,R3,ASR R0移位量在R0中,R3算术右移,和R2逻辑与,结果送R1Rm,ROR RsMOV R2,R4,ROR R0移位量在R0中,R4循环右移,送R2嵌入式系统原理及接口技术(第2版)41 对指令中bit7:0指定的8位无符号立即数循环右移n参见图3.2,对指令中bit7:0指定的8位无符号立即数进行循环右移时,用bit11:8指定移位量,它是一个4位无符号整数。n进行移位操作时,要把指令中bit7:0指定的8位无符号立即数作为最低字节,高位b
22、it31:8用0扩展,形成一个32位数,对这个32位数进行循环右移。移位的次数,由指令中bit11:8指定的4位无符号数乘以2得到,分别为0,2,4,30。此外,移位过程可参见图3.7。关于R15和CPSR中的条件码标志嵌入式系统原理及接口技术(第2版)42 指令汇编格式 使用举例 数据传送和数据求反传送指令举例嵌入式系统原理及接口技术(第2版)43 MOVS R4,R3,LSL#2;R4等于等于R3逻辑逻辑左移左移2位的位的值值,设设置置标标志位志位 MOVS PC,R14;PC=R14,且,且CPSR=SPSR_,用于从,用于从;异常返回;异常返回 MOV R15,LR;PC=R14,用于
23、从子程序返回,用于从子程序返回 MVN R0,R1;R1的的值值求反送求反送R0 MVN R2,#0 xf0;R2=0 xffffff0f MVN R0,#0;R0=0 xffffffff,即,即R0=-1嵌入式系统原理及接口技术(第2版)44 以下举例见教材 算术操作指令举例 逻辑操作指令举例 比较与测试指令举例 使用移位操作的指令举例 程序举例 嵌入式系统原理及接口技术(第2版)45 以下举例见教材 【例3.4】如果R0=1或者R1=2,则程序分支到标号为Label0处;否则,执行标号为Label1处的代码。【例3.5】求R0的绝对值,再求R1的绝对值,将这两个绝对值相加,和存R2。求绝对
24、值的方法是:当Rn=0时,Rn的值不变;否则,将Rn的值求补。【例3.6】对于R1中的无符号数,判断其值的不同范围,作不同的计算。嵌入式系统原理及接口技术(第2版)46 以下举例见参考书 【例3.7】求R0*4+R1*5-R2*7的值,假定它们都是无符号数,运算结果也不会产生进位,结果存R3中。【例3.8】从子程序返回和从异常返回的区别。嵌入式系统原理及接口技术(第2版)47 3.2.4 程序状态寄存器传送指令(MRS、MSR)n只有程序状态寄存器传送指令MRS、MSR,才允许读写程序状态寄存器CPSR或SPSR_。MRS指令读出程序状态寄存器的值送通用寄存器,MSR将通用寄存器的值写入程序状
25、态寄存器。也可以使用通用寄存器的最高4位或立即数的最高4位修改程序状态寄存器的条件码标志。n程序中不允许通过MSR指令直接修改CPSR中的T控制位来实现ARMThumb状态的转换,只能通过BX指令去实现ARMThumb状态的转换。嵌入式系统原理及接口技术(第2版)48 指令编码格式 指令编码格式见教材图3.9、3.10和3.11。指令含义nMRS指令允许将CPSR或SPSR_的内容传送到一个通用寄存器。nMSR指令允许将一个通用寄存器的内容传送到CPSR或SPSR_寄存器。nMSR指令也允许将一个立即数或寄存器的内容只传送到CPSR或SPSR_寄存器的条件码标志(N、Z、C和V),而不影响其他
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 原理 接口 技术 课件 ch3 系统