《ARM培训讲义提纲4794.doc》由会员分享,可在线阅读,更多相关《ARM培训讲义提纲4794.doc(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Xidian University 西安电子科技大学Evaluation Warning: The document was created with Spire.Doc for .NET.ARM培训训讲义提提纲单 位:西安安电子科科技大学学 编 写: 何方勇 编写日期: 20005年7月1日 1. 绪言本次ARMM培训主主要使各各位受训训人员了了解嵌入入式操作作系统的的基本概概念、软软硬件构构成框架架、以及及掌握与与嵌入式式操作系系统相关关的知识识。随着通信技技术、电电子技术术、计算算机技术术、以及及微电子子技术的的发展,片片上系统统(SOC)成为为当今电电子技术术的一大大主流;这就使使得嵌
2、入入式开发发技术成成为整个个业界的的研究和和开发的的热点。我我们知道道当今世世界通信信与信息息技术发发展的3大热点点是:第第三、四四代移动动通信技技术、数数字电视视技术、以以及汽车车电子技技术。在在这几个个热点技技术的最最终实现现将被纳纳入系统统的概念念,其中中嵌入式式系统将将在里面面伴有重重要的角角色。2. 嵌入式操作作系统嵌入式操作作系统作作为一种种新的系系统,我我们应该该怎么把把握呢?以下我我们将简简要介绍绍一下嵌嵌入式系系统。2.1. 嵌入式操作作系统的的基本概概念从字面上,我我们可以以从两方方面理解解嵌入式式系统:嵌入式式、系统统。列举举适当的的例子说说明嵌入入式系统统的应用用:手持
3、持设备、大大型通信信设备2.2. 嵌入式操作作系统与与常见的的单片机机、DSP系统的的细微区区别从系统的概概念出发发讲解:单片机机、和DSP是没有有系统概概念的2.3. 嵌入式操作作系统的的软硬件件平台开开发1嵌入式式操作系系统的硬硬件构成成:核心心处理器器、程序序和数据据存储器器、总线线系统、外外围接口口(设备备)等;2嵌入式式操作系系统的软软件构成成:系统统软件、API、底层层驱动、应应用程序序等结合微机系系统操作作系统讲讲解3常见嵌嵌入式操操作系统统:VxWWorkks、PSOOS、LINNUX、WINNCE、NUCCLEUUS等,各各种操作作系统的的区别和和优点及及应用前前景。2.4.
4、 怎样进行嵌嵌入式系系统设计计嵌入式系统统开发是是本次培培训的主主要内容容,那我我们应该该从以下下方面入入手:处处理器、硬硬件部件件、操作作系统、编编程语言言、软件件开发工工具、硬硬件开发发平台、软软件组成成。1) 处理器:速速度、IO 设计指指标、处处理器的的软件支支持、处处理器调调试方式式、处理理器提供供商的信信誉度;2) 硬件部件:硬件实实现难度度、开发发周期、市市场前景景、供货货情况3) 操作系统:产品的的适合度度、调试试难度、代代码结构构、可开开发潜力力、移植植可行性性4) 编程语言:高级语语言、低低级语言言5) 软件开发工工具:系系统调试试功能如如何、支支持的库库函数、开开发商的的
5、软件支支持3. 嵌入式处理理器在以上的讲讲义中我我们简要要提到了了嵌入式式开发的的各方面面的问题题,接下下来我们们将从硬硬件开始始讲解。在在嵌入式式系统中中,主要要以ARM芯片作作为该系系统的核核心芯片片。3.1. 嵌入式处理理器简介介ARM是AAdvaanceed RRISCC Maachiiness的缩写写,ARM公司于19990成立 ,ARM以低成成本、低低功耗、高高性能迅迅速占领领了全球球市场。其其产品广广泛应用用到移动动通信、消消费电子子、以及及嵌入式式市场。ARM公司不不生产芯芯片,只只是IP供应商商,只做做设计。常见ARMM处理器器系列有有:ARMM7系列、ARMM9系列、ARM
6、M9E系列、ARMM10系列、SeccurCCoree SCC1000、Strrongg ARRM、XSccalee。在此此,我们们主要讲讲解ARMM7系列、ARMM9系列:1) ARM7系系列:0.99MIPPS/MMHz33级流水水、冯.诺依曼曼结构;其内核核主要有有ARMM7TDDMI和ARMM7200T;T:支持16位THUUMB指令,D支持在在片调试试,M增强型型乘法器器,产生生全64位结果果,I:嵌入式ICE硬件提提供片上上断点和和调试点点支持2) ARM9系系列:1.11MIPPS/MMHz55级流水水、哈佛佛结构;其内核核主要有有ARMM9200T、ARMM7222T和ARMM
7、9400T;3.2. 基于ARMM内核的的芯片扩扩展由于ARMM公司只只做IP,不生生产具体体的芯片片;所以以我们所所使用的的ARM芯片都都是全世世界其他他硬件芯芯片厂商商在经过过ARM公司的的授权,然然后在此此基础上上进行硬硬件扩展展,以满满足不同同领域的的需求。ARM9系系列是当当今嵌入入式系统统应用的的主流芯芯片内核核技术。全全世界各各大厂商商都采用用ARM公司的IP来开发发自己的的ARM芯片,主主要厂商商有:三三星、AD、TI、菲利利普、Inttel、CIRRRUSS LOOGICC等。下面,我们们以三星星公司的的ARM芯片S3CC24110X为例来来简要介介绍基于于ARM内核的的芯片
8、扩扩展。注意:ARRM9系列是是兼容ARMM7系列的的。3.3. ARM9220T内核详详解现在基于AARM9920TT内核的的芯片逐逐渐成为为嵌入式式系统芯芯片的主主流,我我们有必必要详解解其结构构;这是是进一步步学习软软件开发发的基础础。内核核的结构构图如下下所示:下面我们将将重点介介绍ARMM9200T的协处处理器CP115和内存存管理单单元MMUU3.3.1. 协处理器CCP1553.3.2. 内存管理单单元MMUU4. 软件开发嵌入式系统统的软件件开发包包括:操操作系统统和应用用程序开开发两个个方面。下下面我们们进一步步讲解基基于ARM芯片的的汇编语语言。4.1. ARM编程程模型A
9、RM常见见版本是是V4和V5,现在在主要用用的是V4,处理器工作作状态:ARM,THUUMB开关状态:进入THUUMB状态、进进入ARM状态存储器格式式:大小小端点格格式指令长度:32位、16位数据类型:字,半半字,字字节操作模式:7种寄存器:331个通用用寄存器器和6个状态态寄存器器中断:4.2. ARM基本本寻址方方式寄存器寻址址:立即寻址:寄存器移位位寻址:寄存器间接接寻址:变址寻址:多寄存器寻寻址:堆栈寻址:块拷贝寻址址:相对寻址:4.3. ARM指令令集本章内容是是详细讲讲解ARRM指令集集。4.3.1. ARM指令令格式1 指令集格式式:ARM指令令集格式式如下表表41所示:表41
10、:ARM指令集集格式注意:某些指令码码没有定定义,但但并不导导致未定定义指令令陷阱出出现,例例如一个个乘法指指令的第第6位变为1。不应应使用这这些指令令,因为为它们的的作用也也许会由由未来的的ARM执行2 ARM指令令集表:下面表42、表43列出了ARM指令集集:表42:表42:ARM指令集集表43:表43:ARM指令集集3 条件码:在ARM状状态下,所所有指令令都会根根据CPSSR条件码码和指令令条件域域的状态态被有条条件地执执行。该该域(位位31:28)决定定了执行行一条指指令的环环境。如如果C、N、Z和V标志的的状态满满足该域域的编码码条件,指指令就被被执行,否否则不予予执行。存在着16
11、6个可能能条件,每每种由复复加在指指令记忆忆符后的的一个双双字符后后缀表示示。例如如,Braanchh(B为汇编编语言)变变为BEQ表示“Braanchh iff Eqquall”,意思思是当Z标志被被置位时时执行Braanchh指令。实实际上,表3-2中所列的15个不同的条件也许会用到,第16个(1111)保留,不能使用。在后缀缺省时,大多数指令的条件域被设置成“Always”(后缀AL)。这意味着不管CPSR的条件码是什么,指令永远被执行。下表44给出了条件码概况:表44:ARM指令中中的条件件码4.3.2. ARM指令令集详解解1分支支与交换换(BX指令,BBrannch和Excchan
12、nge指令):该指令仅仅仅在条件件为真时时被执行行,参见见表44。该指令通过过将一个个通用寄寄存器Rn的内容容复制到到程序计计数器PC来执行行一个分分支。这这个分支支会引起起管道流流,并会会根据Rn指定的的地址再再入。该该指令也也允许交交换指令令集。当当执行该该指令时时,Rn0的值决决定了是是否按照照ARM指令还还是THUUMB指令对对指令流流进行解解码。指指令格式式如下图图41所示:图41:BX指令格格式指令循环环时间:执行BX指指令占用用2S+1N周期(与与BL一样),这这里S和N分别代代表连续续(S周期)和和非连续续(N周期)。汇编程序序语法:BX-分支支和交换换指令BX connd R
13、Rn ;coond为 双字母母条件记记忆符(即即条件码码),见见表44,而Rn 表示一一个有效效寄存器器(比如如:R0)使用R115作操作作数:如果将R115作操作作数,该该情况未未定义。例:ADR RR0, Intto_TTHUMMB + 1 ;产生生分支目目标地址址,biit0置置位,进进入THHUMBB状态BX R00 ;分分支并改改变到TTHUMMB状,R115(PPC):=R00CODE116 ;汇编作作为THHUMBB指令的的后续码码Into_THUUMBADR RR5, Bacck_tto_AARM ;产生生分支目目标到字字排列地地址,bbit00置低,变变回到AARMBX R5
14、5 ;分分支并变变回到AARM状状态,RR15(PC):=RR0ALIGNN ;字字排列CODE332 ; 汇编作作为ARRM指令令的后续续码Back_to_ARMM2分支支与带链链接分支支(B、BL)该指令仅仅仅在条件件为真时时被执行行,参见见表44。该指指令的编编码如下下图42所示。图42:B、BL指令格格式分支指令包包含有一一个有符符号的2态补充24位偏移移(相当于25根地址址线+符号位位,即+/-32MM字节)。这被被左移两两位,符符号扩展展至32位,并并加到程程序计数数器PC。因此此该指令令可以指指定+/-32MM字节的的分支。该该指令偏偏置必须须考虑预预取操作作,它会会引起程程序计
15、数数器PC超前当当前指令令2个字(8个字节节)。超过+/-32MM字节的的分支必必须使用用偏置或或事先装装入寄存存器的绝绝对目标标。在这这种情况况下,如如果要求求有带链链接类型型的分支支操作,应应当将PC值人工工存入R14。链接位:带链接的分分支(BL)将旧旧的PC写入当当前存储储空间的的链接寄寄存器(R14)。写写入R14的值被被调整到到允许预预取,并并包含紧紧跟着“分支与与链接指指令”的指令令地址。注注意CPSSR不保留PC值,R11411:0总是清清零。从带链接的的分支返返回,如如果链接接寄存器器仍然有有效,可可使用MMOV PC,R144;或如如果链接接寄存器器以被Rn存作堆堆栈指针针
16、,使用用LDMMRn!,.PCC。指令循环环时间:分支和带链链接分支支指令占占用2S+1N增加的的周期(与BX一样),这里S和N分别代表连续(S周期)和内部(I周期)。汇编程序序语法:中的内内容任意意,中的内内容必须须出现BLconnd L 常用请请求带链链接分支支的指令令形式。如如果缺省省,R14不受指指令影响响,即不不将旧的的PC值存入R14。condd如表44中所示示的双字字母助记记符(条条件码),如如果缺省省,默认认为AL(Alwwayss)。目标单单元,汇汇编程序序计算偏偏移量。例hereBBALhheree ;等等待,指指令汇编编成0xxEAFFFFFFFE B theere ;等
17、待待,默认认条件是是“Alwwayss”CMP RR1,#0 ; R110?比较较BEQ ffredd ; 为零,则则跳转;反之,继继续下一一个指令令BL suub+RROM ; 跳跳转,调调用子程程序ADDS R1,#1 ; RR1R11,设置CPPSR标标志BLCC subb ; C0, 调用用子程序序3数据据处理:数据处理指指令仅在在条件为为真时被被执行,参参见表44。该指指令编码码如下图图43所示。图43:数据处处理指令令该指令通过过对一或或两个操操作数进进行指定定的算术术或逻辑辑运算产产生结果果。第一一个操作作数总是是一个寄寄存器(Rn)。根据指令中中L(即D25)位的的值,第第二个
18、操操作数可可能是一一个移位位寄存器器(Rm)或一一个8位循环环立即数数(Imm)。根根据指令令中S位的值值,确定定该指令令的结果果是否可可以保护护或更新新CPSSR中的条条件码。确定的运算算(TST(OP1与OP2)、TEQ(OP1异或OP2)、CMP(OP11-OPP2)、CMN(OP11+OPP2)不不将结果果写入Rd。它们们只用执执行检测测和设置置结果中中的条件件码并总总对S位置位位。CPSRR标志:数据处理运运算可分分为逻辑辑运算和和算术运运算,逻逻辑运算算(AND、EOR、TST、TEQ、ORR、MOV、BIC、MVN)对操操作数的的所有相相应位或或产生结结果的操操作数执执行逻辑辑运
19、算。如如果S位被置置位(并并且Rd不是R15,见下下表),则CPSR中的V标志不受影响,C标志将被置位来执行barrel shifter(或当移位操作为LSL #0时保护),Z标志当且仅当结果全零时被置位,N被置为结果bit31的逻辑值。ARM数据据处理指指令见下下表45表45:数据处处理指令令算术运算(SUB、RSB、ADD、ADC、SBC、RSC、CMN)将每每个操作作数都看看作是一一个32位的整整数(无无符号或或两个独独立的符符号,两两种情况况时一样样的)。如如果S位被置置位(并并且Rd不是R15),则CPSSR中的V标志在在结果的的bitt31出现溢溢出时被被置位,如如果操作作数均为为
20、无符号号数可以以不理会会,但如如果操作作数为两两个独立立的有符符号数则则会发出出错误提提示,C标志会会由于执执行ALU的bitt31被置位位,Z标志当且且仅当结结果全零零时被置置位,N标志被被置为结结果bitt31的值(如如果认为为操作数数为两个个独立的的有符号号数时指指示结果果为负)。移位:当第二个操操作数被被指定为为移位寄寄存器时时,寄存存器的移移位操作作受指令令中的移移位域控控制。该该域指示示要执行行的移位位类型(逻逻辑左移移或右移移、算术术右移或或循环右右移)。寄寄存器要要移动的的值可包包含在指指令的立立即域中中,或者者在另一一个寄存存器(除除了R15)。不不同移位位类型的的编码如如图
21、4-4所示。 图4-44: ARRM移位操操作指定偏移移量指令令:当指令中指指定了偏偏移量时时,它包包含了一一个5位的区区域,其其赋值范范围为0331。逻辑辑左移(LSL)获取Rm的内容容并将每每一位移移动指定定量到更更有意义义的位置置。结果果的最不不重要位位以零填填充,Rm的最高高位被丢丢弃,并并不映射射到结果果中,除除非当ALU运算处处于逻辑辑状态(见见上面)时时,丢弃弃的最不不重要的的位变为为shiifteer的进位位输出,并并可能锁锁定CPSSR的S位。例例如,LSLL #55的影响响如下图图45所示。图45:逻辑左左移注意:LSL #5是一个个特例,这这里shiifteer进位输输出
22、是CPSSR CC标志的的过去值值。Rm的内容容被直接接用作第第二个操操作数。逻逻辑右移移(LSR)指令令类似,但但是Rm的内容容被移到到结果最最不重要要的位置置。LSRR #55的影响响如下图图46所示。图46:逻辑右右移此种移位使使得Rm的第31位有零零进位输输出。与与逻辑左左移零一一样,逻逻辑右移移零是多多余的,所所以汇编编程序将将LSRR #00(以及ASRR #00和RORR #00)转换换成LSLL #00,并允允许指定定LSRR #332。算术右移(ASR)与逻逻辑右移移类似,不不同的是是高位被被Rm的bitt31填充而而不是零零。这保保护了2个独立立符号状状态中的的符号,例例如
23、,ASRR #55如下图47所示。图47:算术右右移此种移位使使得Rm的bitt31重新用用作进位位输出,并并且操作作数2的每一一位也等等于Rm的bitt31。所以以根据Rm的bitt31的值,结结果为全全1或全0。循环右移(ROR)操作作是将逻逻辑右移移操作中中移出去去的位再再引入放放置在结结果的高高端,在在逻辑右右移中常常用零来来填充高高位。例例如,RORR #55如下图48所示。图48:循环右右移期望给ROOR #0的移位域域形式用用于对barrrell shhiftter的特殊殊功能,即即带扩展展的循环环右移编编码。这这个循环环右移是是它使用用附加的CPSSR的C标志来提提供一个个要被
24、移移位的 333 位的数数量到Rm内容的的最高端端,参见见下图49。 图49: 带扩展展循环右右移指定偏移移量寄存存器只有Rs的的最低端端字节被被用来确确定偏移移量。Rs可以是是除R15外的任任何寄存存器。如果该字节节为零,Rm未改变变的内容容将被当当作第二二操作数数,并且且旧的CPSSR的 C标志值值将会被被作为shiifteer的进位位输出。如果1到331位之间间字节有有值,移移位结果果将与指指定移位位指令的的同一个个值和移移位操作作匹配。如果字节中中的值大大于等于于32,结果果为上面面所述移移位的逻逻辑扩展展:1. LSL 332结果为为零,进进位输出出等于Rm的0位;2. LSL大于于
25、32结果为为零,进进位为零零;3. LSR 332结果为为零,进进位输出出等于Rm的31位;4. LSR大于于32结果为为零,进进位为零零;5. ASR大于于等于32结果和和进位等等于Rm的31位;6. ROR 332结果等等于Rm,进位位等于Rm的31位;7. ROR nn结果和和进位与与RORR n-32相同,这这里n大于32;因此此不断从从n中减去32,直到n值在1331之间,见见前面。注意:必须使带有有控制移移位寄存存器指令令的bitt 7为零,该该位为1会引起起指令为为乘或未未定义。立即数循循环:立即数循环环域是一一个4位无符符号整数数,指定定对8位立即即数进行行移位操操作。该该值为
26、扩扩展到32位的零零,然后后通过在在循环域域中的两两倍值服服从右移移。这可可以产生生许多常常数,例例如2的幂。写入R115当Rd为除除R15外的寄寄存器时时,CPSSR中的条条件码标标志可以以从前面面所述的的ALU标志更更新。当Rd为RR15并且指指令中的的S标志未未置位时时,操作作结果被被放入R15且CPSSR不受影影响。当Rd为RR15且S标志置置位时,操操作结果果被放入入R15,对应应于当前前模式的的SPSSR被移入CPSSR。这允允许自动动存储PC和CPSSR的状态态改变。这这种指令令格式在在用户模模式下不不能使用用。用R155作操作作数如果R155(PC)被用用于数据据处理指指令中的
27、的一个操操作数,可可直接使使用该寄寄存器。PC值就是是指令地地址、加加上由于于指令预预取的8或12个字节节。如果果指令中中指定了了移位量量,PC为前8个字节节。如果果用寄存存器指定定移位量量,则PC为前12个字节节。TEQ、TST、CMP和CMN操作码码:注意:TEQ、TTST、CMP和CMN不写结结果操作作结果但但置位CPSSR中的标标志位。即即使助记记符中没没有指定定,汇编编程序也也应当总总将这些些指令的的S标志置置位。不能使用TTEQPP指令,它它是早期期ARM处理器器使用的的TEQ指令:代替PSR转移操操作。在ARM9920TT中TEQQP的功能能是:如如果处理理器工作作在特许许模式就
28、就将SPSSR_移入CPSSR,如果果在用户户模式什什么也不不做。指令周期:数据处处理指令令增加的的周期数数如下表表4-6:表4-6: 增加的的循环时时间注:S、NN和I分别定定义为顺顺序(S-周期)、非非顺序(N-周期)和和内部(I-周期)。汇编程序句句法 MOV,MMVN (单操操作数指指令).coondS Rdd, CMP,CCMN,TEQQ,TSST (无结果果指令).coond Rnn, AND,EEOR,SUBB,RSSB,AADD,ADCC,SBBC,RRSC,ORRR,BIICcoondS Rdd,Rnn,这里: Rmm, 或或,condd 双字母母条件助助记符,见见表44S
29、如果S表示(指CMPP, CCMN, TEEQ, TSTT),置置位条件件码.Rd, RRn 和和 Rmm 寄存器器号表达达式 如果使使用,汇汇编程序序将会产产生一个个移位的的立即8位域来来匹配表表达式,如如果不用用会出错错 或或 #eexprresssionn, 或或 RRRX (带扩展展右移1位).s AASL, LSSL, LSRR, AASR, ROOR. (ASSL与LSLL意义相相同,它它们的汇汇编码一一样)例:ADDEQQ R22,R44,R55 ;如如果Z标志置置位,使使R2=R4+R5TEQS R4,#3 ;测试R4等于3(S是多余余的,由由汇编程程序自动动插入)SUB RR
30、4,RR5,RR7,LLSR R2 ;通过R2底部字字节数逻逻辑右移移R7,从R5中减去去结果,并并;将答案放放入R4MOV PPC,RR14 ;从子子程序返返回MOVS PC,R144 ;从从中断返返回,并并从SPSSR方式保保存CPSSR4PSSR转移(MRS、MSR):该指令仅当当条件为为真时执执行,参参见表44。MRS和MSR指令来来自于数数据处理理操作的的子集,并并用TEQ、TST、CMN和CMP指令执执行,不不置位S标志,编编码参见见下图410。这些指令允允许对CPSSR和SPSSR寄存器器存取。MRS指令允允许将CPSSR或SPSSR_的内容容移入通通用寄存存器。MSR指令允允许
31、将通通用寄存存器的内内容移入入CPSSR或SPSSR_寄存器器。MSR指令令也允许许将一个个立即数数或寄存存器内容容转移到到CPSSR或SPSSR_寄存器器的条件件码标志志(N、Z、C和V)而不不改变控控制位。在在这种情情况下,指指定的寄寄存器内内容的高高4位或32位立即即数被写写入相应应PSR(程序序状态寄寄存器)的的高4位。操作数限限制: 在用户模式式,CPPSR的控制制位受保保护,所所以只有有CPSSR的条件件码标志志可以改改变。在在其它(特特许)模模式,整整个CPSSR均可改改变。 软件决不能能改变CPSSR中T位的状状态。如如果出现现这种情情况,处处理器将将进入无无法预料料的状态态。
32、 存取的SPPSR寄存器器取决于于执行时时的方式式。例如如,当处处理器在在FIQ模式时时,只有有SPSSR_ffiq是可存存取的。 不能将R115指定为源源或目的的寄存器器。 在用户模式式下不能能存取SSPSRR,因为为该寄存存器不存存在(用用户不能能使用)。图4100:MRS、MSR指令格格式保留位:ARM9220T中只定定义了PSR的12个位(N、Z、C、V、I、F、T和M44:0),其其余位保保留为将将来的处处理器使使用。为确保ARRM9220T和将来来处理器器之间的的最大兼兼容性,应应当遵守守下列原原则: 当改变PPSR的值时时,应当当保护保保留位; 当检查PPSR状态时时,程序序不应
33、当当依赖保保留位的的特定值值,因为为将来的的处理器器可能会会将它们们认作1或0。例:下列顺序完完成模式式改变:MRS RR0,CCPSRR ;复复制CPSSRBIC RR0,RR0,#0x11F;模模式位清清零,即即将CPSSR.MM4:0清清零ORR RR0,RR0,#neww_moode ;选择择新模式式MSR CCPSRR,R00 ;回回写修改改后的CPSSR当目的只是是简单地地改变PSR中的条条件方式式码时,可可直接将将值写入入标志位位而不必必影响控控制位。下下列指令令对N、Z、C和V标志置置位:MSR CCPSRR_fllg,#0xFF000000000 ;对所有有标志位位置位,不不
34、考虑它它们的过过去状态态(不影影响控制制位)不要试图向向整个PSR写入8位立即即数,因因为这种种操作不不保护保保留位。指令循环环周期:PSR转移移占用1S增加的的周期,这这里S定义为为顺序(S-周期)。汇编语言句句法: MRS 将PSR内容转转移到寄寄存器MRSccondd RRd, MSR 将寄存存器内容容转移到到PSRRMSRccondd ,RRm MSR 只将寄寄存器内内容转移移到PSR标志位位MSRccondd ,Rm寄存器内容容最重要要的4位分别别写入N、Z、C和V标志。 MSR 只将立立即数转转移到PSR标志位位MSRccondd ,应当用符号号表示分分别写入入N、Z、C和V标志的
35、的最重要要4位的32位数值值。关键:condd 双字母母条件助助记符,见见表44Rd annd RRm 除R15外的寄寄存器表表达式 CPPSR, CPPSR_alll, SSPSRR或SPSSR_aall. (CCPSRR和CPSSR_aall与与SPSSR和SPSSR_aall意意义相同同) CCPSRR_fllg或SPSSR_fflg 如果使使用,汇汇编程序序将会产产生一个个移位的的立即8位域来来匹配表表达式,如如果不用用会出错错例:在用户模式式,指令令表现为为:MSR CCPSRR_alll,RRm ; CPPSR31:28 - Rmm311:288MSR CCPSRR_fllg,RR
36、m ; CPPSR31:28 - Rmm311:288MSR CCPSRR_fllg,#0xAA000000000 ; CPPSR31:28 - 0xxA (sett N,C; cleear Z,VV)MRS RRd,CCPSRR ; Rd31:0 - CPSSR331:00在特许模式式,指令令表现为为:MSR CCPSRR_alll,RRm ; CPPSR31:0 - Rm31:0MSR CCPSRR_fllg,RRm ; CPPSR31:28 - Rmm311:288MSR CCPSRR_fllg,#0x55000000000 ; CPPSR31:28 - 0xx5 (sett Z,V;
37、cleear N,CC)MSR SSPSRR_alll,RRm ; SPPSR_311:0- Rm31:0MSR SSPSRR_fllg,RRm ; SPPSR_311:288 - RRm331:228MSR SSPSRR_fllg,#0xCC000000000 ; SPPSR_311:288 - 00xC (seet NN,Z; cllearr C,V)MRS RRd,SSPSRR ; Rd31:0 - SPSSR_31:05乘和和带累加加的乘(MUL、MLA):该指令仅当当条件为为真时执执行,参参见表44。指令令编码见见下图411。乘和带累加加的乘指指令使用用8位布氏氏运算法法则执行行整形
38、乘乘法。图4111:MUL、MLA指令格格式指令的乘法法形式为为Rd:=Rmm*Rss,Rn不考虑虑,并被被设置为为零,以以兼容将将来可能能升级的的指令集集。带累累加的乘乘法形式式为Rd:=Rmm*Rss+Rnn,保存存了在某某些环境境下的一一个外在在ADD指令。两两种指令令形式均均以有符符号(两两种独立立)或无无符号整整数作操操作数工工作。32位有符符号乘法法和无符符号乘法法的结果果仅在高高32位不同同,低32位结果果是一样样的。这这些指令令进产生生乘法的的低32位,既既可用于于有符号号乘法,也也可用于于无符号号乘法。例如操作数A操作数B结果0xFFFFFFFFF60x00000000114
39、0xFFFFFFFF3381)如果操操作数被被当作有有符号的的操作数A为为-10,操作作数B为20,结果果-200被正确确地表示示为0xxFFFFFFFF38。2)如果操操作数被被当作无无符号的的操作数A为为4299496672886,操操作数B为20,结果果为855899934557200,即0xx13FFFFFFFF338,所所以最低低32位为0xxFFFFFFFF38。操作数限限制:目标寄存器器Rd不一定定与操作作数寄存存器Rm一样。R15必须不不能被当当作操作作数或目目标寄存存器。所有其它寄寄存器的的组合都都会给出出正确结结果,当当需要时时Rd、Rn和Rs可用作作同一个个寄存器器。CP
40、SSR标志:可任意置位位CPSSR的标志志位,它它由指令令中S位控制制。N(负)和和Z(零)标标志根据据结果正正确置位位(N等于结结果的bitt31位,Z当且仅仅当结果果为零时时置位)。C(进位)标志置位无意义的值V(溢出)标志不受影响。指令循环环周期MUL指令令占用1S+mI周期,MLA指令占占用1S+(m+1)II周期,这这里S和I分别代代表连续续(S周期)和和内部(I周期)。m 执行行乘法所所需的8位乘数数阵列周周期数,由Rs指定的乘数操作数控制。其可能值如下:1 如果乘乘数操作作数322:8位为全0或全12 如果乘乘数操作作数332:116 位为全0或全13 如果乘乘数操作作数332:
41、224 位为全0或全14 所有其其它情况况汇编语言言句法MULcconddSS RRd,RRm,RRsMLAcconddSS RRd,RRm,RRs,RRncondd 双字母母条件助助记符,见见表44S 如果S出现,置置位条件件码Rd, RRm, Rs andd Rnn 除R15外的寄寄存器表表达式例:MUL RR1,RR2,RR3 ; R11:=RR2*RR3MLAEQQS RR1,RR2,RR3,RR4 ;ConndittionnalllyR11:=RR2*RR3+RR4, Setttinng ccondditiion coddes.6长乘乘和带累累加的长长乘(MULLL、MLAAL)该指
42、令仅当当条件为为真时执执行,参参见表44。指令令编码见见下图412。长乘指令执执行两个个32位操作作数整数数乘法,并并产生64位结果果。有符符号和无无符号乘乘法带可可选的累累加给出出4种变化化。图4122:MULLL、MLAAL指令格格式乘法形式(UMUULL和SMUULL)占用用两个32位数,相相乘后得得出形式式为RdHHi,RRdLoo:=RRm*RRs的结果果。64位结果果的低32位写入RdLLo,结果果的高32位写入RdHHi。带累加乘法法形式(UMLLAL和SMLLAL)占用用两个32位数,相相乘后再再加一个个64位数得得出形式式为RdHHi,RRdLoo:=RRm*RRs+RRdH
43、ii,RddLo的结果果。64位加数数的低32从RdLLo读取,64位加数数的高32从RdHHi读取,64位结果果的低32位写入RdLLo,结果果的高32位写入RdHHi。操作数限限制 R15不能能用作操操作数或或目标寄寄存器。 RdHi、RdLLo和Rm必须指指定不同同的寄存存器。CPSRR标志对CPSRR中的标标志置位位是任意意的,并并受指令令中S位控制制。N和Z标志根根据结果果来置位位(N为结果果的bitt63,Z被置位位当且仅仅当全部部64位为0时)。C和V置为无无意义的的值。指令循环环周期MULL占占用1S+(m+1)II周期,MLAAL占用1S+(m+2)周期,这这里m是执行行乘法所所需的8位乘数数阵列周周期数,由Rs指定的乘数操作数控制。其可能值如如下:对有符号指指令SMUULL、SMLLAL 如果乘数操操作数311:8位为全0或全1 如果乘数操操作数31:166 位为全0或全1 如果乘数操操作数31:24 位为全0或全1 所有其它情情况对无符号指指令UMUULL、UMLLAL 如果乘数操操作数311:8位为全0或全1 如果乘数操操作数31:166 位为全0或全1 如果乘数操操作数31:24 位为全0或全1 所有其它
限制150内