版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Xidia n Uni versity西安电子科技大学ARM培训讲义提纲单位:西安电子科技大学编写:何方勇编写日期:20052005年 7 7 月 1 1 日Xidia n Uni versity西安电子科技大学1.绪言本次ARM培训主要使各位受训人员了解嵌入式操作系统的基本概念、软硬件构成框架、以及掌握与嵌入式操作系统相关的知识。随着通信技术、电子技术、计算机技术、以及微电子技术的发展,片上系统(SOC )成为当今电子技术的一大主流;这就使得嵌入式开发技术成为整个业界的研究和开发的热点。我们知道当今世界通信与信息技术发展的 3大热点是:第三、四代移动通信技术、数字电视 技术、以及汽车电子技术
2、。在这几个热点技术的最终实现将被纳入系统的概念,其中嵌入式系统将在里面伴有重要的角色。2.嵌入式操作系统嵌入式操作系统作为一种新的系统,我们应该怎么把握呢?以下我们将简要介绍一下嵌 入式系统。2.1.嵌入式操作系统的基本概念从字面上,我们可以从两方面理解嵌入式系统:嵌入式、系统。列举适当的例子说明嵌入式系统的应用:手持设备、大型通信设备2.2.嵌入式操作系统与常见的单片机、DSP系统的细微区别从系统的概念出发讲解:单片机、和DSP是没有系统概念的2.3.嵌入式操作系统的软硬件平台开发1.嵌入式操作系统的硬件构成:核心处理器、程序和数据存储器、总线系统、外围接口(设备)等;2嵌入式操作系统的软件
3、构成:系统软件、API、底层驱动、应用程序等结合微机系统操作系统讲解3. 常见嵌入式操作系统:VxWorks、PSOS、LINUX、WINCE、NUCLEUS等,各种操作系 统的区别和优点及应用前景。2.4.怎样进行嵌入式系统设计嵌入式系统开发是本次培训的主要内容,那我们应该从以下方面入手:处理器、硬件部件、Xidia n Uni versity西安电子科技大学操作系统、编程语言、软件开发工具、硬件开发平台、软件组成。1) 处理器:速度、io设计指标、处理器的软件支持、处理器调试方式、处理器提供商的 信誉度;2) 硬件部件:硬件实现难度、开发周期、市场前景、供货情况3) 操作系统:产品的适合度
4、、调试难度、代码结构、可开发潜力、移植可行性4) 编程语言:高级语言、低级语言5) 软件开发工具:系统调试功能如何、支持的库函数、开发商的软件支持3.嵌入式处理器在以上的讲义中我们简要提到了嵌入式开发的各方面的问题,接下来我们将从硬件开始讲解。在嵌入式系统中,主要以 ARM芯片作为该系统的核心芯片。3.1.嵌入式处理器简介ARM是Advaneed RISC Machines的缩写,ARM公司于1990成立,ARM 以低成本、 低功耗、高性能迅速占领了全球市场。其产品广泛应用到移动通信、消费电子、以及嵌入式 市场。ARM公司不生产芯片,只是IP供应商,只做设计。常见ARM处理器系列有:ARM7系
5、列、ARM9系列、ARM9E系列、ARM10系列、 SeeurCore SC100、Strong ARM、XSeale。在此,我们主要讲解 ARM7 系列、ARM9 系列:1) ARM7系列:0.9MIPS/MHZ3 级流水、冯诺依曼结构;其内核主要有ARM7TDMI 和ARM720T ; T:支持16位THUMB指令,D支持在片调试,M增强型乘法器,产生全 64位结果,I:嵌入式ICE硬件提供片上断点和调试点支持2) ARM9系列:1.1MIPS/MHZ5 级流水、哈佛结构;其内核主要有ARM920T、ARM722T 和 ARM940T ;3.2.基于ARM内核的芯片扩展由于ARM公司只做I
6、P,不生产具体的芯片;所以我们所使用的 ARM芯片都是全世界 其他硬件芯片厂商在经过 ARM公司的授权,然后在此基础上进行硬件扩展,以满足不同领域的需求。ARM9系列是当今嵌入式系统应用的主流芯片内核技术。全世界各大厂商都采用ARM公司的IP来开发自己的 ARM芯片,主要厂商有:三星、 AD、TI、菲利普、In tel、CIRRUS LOGIC 等。下面,我们以三星公司的 ARM芯片S3C2410X为例来简要介绍基于 ARM内核的芯片 扩展。注意:ARM9系列是兼容 ARM7系列的。Xidia n Uni versity西安电子科技大学JTAQARMQ;0TmvnictioiiMMUmurui
7、:H.:i|ncacrtEH6KB;iLCDLCDCONT.UMA-DawCACHEAH 甘 t/sBridge & DMA (ChnUARTC, 1, ZUSP nEMctiA pBWatfidig TimerF t/ Sfit J GO NT AibltjmcnddUPIG. 1Mefncary GONT-SRAJ.thtCiR SOR.1BLOCK DIAGRAMFigure 1ExternalGopracIntGFfJCPIPAJ3-I &|I CP 15 ItWJA|31 0IntsMiiipiCOHir&UIrnBeBScK PA Tig rurjiBUS CON i加 ClIOr
8、lJDWmMAMBA 0U5 IJFDita MMU门lui列ARfil?TGMI pracwrcre ilntnial Em bedded h EjUSB GOUTNANDCONT. NANO Ftesh 0l Laadeiyi_r PcwieiNl-1/| MmagnwlUK-PIOAUCurwDPWMD 矍 4(lBleirrEillXidia n Uni versity西安电子科技大学F IUIB 1-1. AR U920T Functlonil Black DisgrsmF面我们将重点介绍 ARM920T的协处理器CP15和内存管理单元MMU3.3.1.协处理器CP153.3.2.内
9、存管理单元MMU4.软件开发嵌入式系统的软件开发包括:操作系统和应用程序开发两个方面。下面我们进一步讲解基于ARM芯片的汇编语言。4.1. ARM编程模型ARM常见版本是 V4和V5,现在主要用的是 V4,处理器工作状态:ARM,THUMB开关状态:进入 THUMB 状态、进入 ARM 状态5Xidia n Uni versity西安电子科技大学存储器格式:大小端点格式指令长度:32位、16位数据类型:字,半字,字节 操作模式:7种寄存器:31个通用寄存器和6个状态寄存器 中断:4.2. ARM基本寻址方式寄存器寻址:立即寻址:寄存器移位寻址:寄存器间接寻址:变址寻址:多寄存器寻址:堆栈寻址:
10、块拷贝寻址:相对寻址:4.3. ARM指令集本章内容是详细讲解 ARM指令集4.3.1.ARM指令格式1.指令集格式:Xidia n Uni versity西安电子科技大学ARM旨令集格式如下表 4 1所示:31 3U29 2d 27 2h25 24 Z2 212LH91817 16 1514U12 11 Wy 7654 2 1 UJond?Opcode_jndRmCondRdLoRinCondRmJondj2ondCondCondlonci3ond1(Ju111111111111J17门uRdPu000 01HRm1RdpULL*ffsei1H1OffsetRdBPOffsetPRegist
11、er LisieLRnCond?CondPiCRcCP#Off対Cond,1-RnCRdCP#CondCPCpc2RnCPCRnAMl;rored t v FrccescrDcrto Processing.-PSR TransferLlulli JI1,Multiply LongSinqh 3ata 饷gBranch and ExchangeH dll word Dd.d Tranregistei of feelHaliwordl Data Transferinrtmendiate offsetSinqle Zata Trcinsfe-LlndefinertBlock Data Transfe
12、rBranchCoprooesscr Deta TransferCdprccessor D她 OperationCoprocessor Register TrarsfrSotv/are Interrupt例如一个乘法指令的第 6位变ARM执行31 30 25 22722 24 22221 20 19 W 17 1614 13 12 11 10 T v 5 4 3 2 I 0表4 1: ARMf令集格式注意:某些指令码没有定义, 但并不导致未定义指令陷阱出现, 为1。不应使用这些指令,因为它们的作用也许会由未来的2. ARM指令集表:下面表4 2、表4 3列出了 ARM指令集:表 4 2:西安电
13、子科技大学3.条件码:表 4 3:MnemonicinstructionActionMRCMove 帕m coprocessor register to CPU registerRn: = cRn cRinMRSMove PSR status flags to registerRn: = PSRMSRMove register to PSR status/flagsPSR ; = REMULMultiplyRd: = Rm - RsMVNMove negative registerRd: = C K FFFFFFFF EOR Op2ORRORRd: = Rn OR Op2RSBSubtract
14、Rd: = Op2 - RnRSCReverse Subtract v.itri GarryRd: = Op2 Rri -1 + CanySBCSubtract v, ith CarryRd: = Rn - Op2 -1 + CarrySTCStor coprocessor register to memoryaddress: = CRnSTMStore MultipleStack manipulation (Push)STRStoi e register to rnenior: - RdSUBSubtractRd: = Rn -Op2SWISoftware InterruptOS callS
15、WPSwap register with memor yRd: = Rnh Rn := RmTEQTest bitwlrse equalityCPSR flags: = Rn EOR Qp2TSTT est bitsCPSR flags: = Rn AND Op2表4 3: ARM指令集MnemoniaInstructionActionADCAdd with carryRd: = Rn + Cp2 + uarryADDAddRd: = Rn + Gp2ANDANDRd: = Rr AND 0p2呂BranchR15. = biJdressBICSit ClearRd: = Rn AND NOT
16、 Op2BLBranch with LinkR14: - R15, R15; = addressBXBranch and ExchangeR15 = Rnr T bit:二 Rn0CDPCoproc$sar Dmtm Processing(Coprocessor-spec ific iCMNOoiiipare NstiveCPSR flaqs: = Rr + Op2GMPCoinfwrftCPSR flags: = Rn - Op2EOREXCILISIVG ORRd =RRAND N3T Qp2) OR Op2 AND NOT Rn)LDCLoad coprocessor from memo
17、ryCoprocessor loadLDMLoad miltlple regtstersStack manipulation (Pap)LDRLoad register frrn mernaryRd - address;MCRMo/e CPU register :o asprocessor registercRn. - rRn cRin衲LAMultiply AccumulateRd: = iRm x Rs) * RnMOVrugi$tb cr consentRd:二 OpZXidia n Uni versity表4 2 : ARM指令集Xidia n Uni versity西安电子科技大学在
18、ARM犬态下,所有指令都会根据CPSR条件码和指令条件域的状态被有条件地执行。该域(位31:28 )决定了执行一条指令的环境。如果C N、Z和V标志的状态满足该域的编码条件,指令就被执行,否则不予执行。存在着16个可能条件,每种由复加在指令记忆符后的一个双字符后缀表示。例如,Branch ( B为汇编语言)变为 BEQ表示Branch if Equal ”,意思是当Z标志被置位时执行 Branch指令。实际上,表 3-2中所列的15个不同的条件也许会用到,第16个(1111 )保留,不能使用。在后缀缺省时,大多数指令的条件域被设置成Always (后缀AL)。这意味着不管CPSR勺条件码是什么
19、,指令永远被执行。下表4- 4给出了条件码概况:CodeSuffixFlagsMeaning0000EQZ setoqum0001NEZ clearnot equal0010GS0 setunsigned higher or same0011COC clearunsigned lower0100MlN setnegative0101PLN clearpositive or zero0110VSV set0111VQV clearno overflow1000HIC set and Z clearunsigned higher1001LSC cle茁 or Z setunsigned lower
20、 or same1010GEN equals1greater ar equal1011LTN not equal to Vless t 伽1100GTZ clear AND (N equals V)greater than1101LEZ set OR (N not equal to V)less than or equal11 I0AL(Ignored)always表4 4: ARM旨令中的条件码4.3.2.ARM旨令集详解 1分支与交换(BX旨令,Branch和Exchange指令):该指令仅仅在条件为真时被执行,参见表4-4。该指令通过将一个通用寄存器Rn的内容复制到程序计数器 PC来执行
21、一个分支。这个分支会引起管道流,并会根据Rn指定的地址再入。该指令也允许交换指令集。当执行该指令时,RnO的值决定了是否按照 ARM旨令还是THUMB旨令对指令流进行解码。指令格式如下 图4 1所示:Xidia n Uni versity西安电子科技大学31 起灯 创 2320 19 苗 1512 HST4 3CoridJ 0 D q|o D 帀11 Ipl11 IM1 1 10 0 O 11 Rn3:0 Operand RegisterIf bitO of Rn - 1. subseq lie nt i nstructions decoded as TH ULIB instructl ons
22、 If bitO of RJI -0. subsequent instructions decoded cis ARM instructions31:2a Condition Field图4 1: BX指令格式指令循环时间:执行BX指令占用2S+1N周期(与BL一样),这里S和N分别代表连续(S周期)和非连续(N周期)。汇编程序语法:BX-分支和交换指令BX con d Rn;cond为双字母条件记忆符(即条件码),见表 示一个有效寄存器(比如:R0)4 4,而Rn表使用R15乍操作数:如果将R15作操作数,该情况未定义。ADRR0, I nto_THUMB + 1 ;产生分支目标地址,bit
23、0置位,进入THUM状态BXR0: 分支并改变到 THUM状,R15(PC):=R0CODE16;汇编作为THUM指令的后续码In to_THUMBADRR5, Back_to_ARM;产生分支目标到字排列地址,bit0置低,变回到BXR5;分支并变回到 ARM状态,R15(PC):=R0ALIGN;字排列CODE32;汇编作为ARMH令的后续码Back to ARM例:ARM 2分支与带链接分支(B、BL)该指令仅仅在条件为真时被执行,参见表4 4。该指令的编码如下图 42所示。101Offset|31 2B 2725 24024 Link bit0 = ErancTi1 = Branch
24、wit It link31:23 condition Field10LXidia n Uni versity西安电子科技大学图4 2: B BL指令格式分支指令包含有一个有符号的 2态补充24位偏移(相当于25根地址线+符号位,即+/-32M 字节)。这被左移两位,符号扩展至32位,并加到程序计数器PG因此该指令可以指定+/-32M 字节的分支。该指令偏置必须考虑预取操作, 它会引起程序计数器 PC超前当前指令2个字(8 个字节)。超过+/-32M字节的分支必须使用偏置或事先装入寄存器的绝对目标。在这种情况下,如果要求有带链接类型的分支操作,应当将PC直人工存入R14。链接位:带链接的分支(B
25、L)将旧的PC写入当前存储空间的链接寄存器(R14)。写入R14的值被调整到允许预取,并包含紧跟着“分支与链接指令”的指令地址。注意CPSRT保留PC直,R141:0总是清零。从带链接的分支返回,如果链接寄存器仍然有效,可使用M0WC,R14 ;或如果链接寄存 器以被Rn存作堆栈指针,使用LDM Rn!,.PC。指令循环时间:分支和带链接分支指令占用 2S+1N曽加的周期(与B1样),这里S和N分别代表连续(S 周期)和内部(I周期)。汇编程序语法:中的内容任意, 中的内容必须出现BLc ond 常用请求带链接分支的指令形式。如果缺省,R14不受指令影响,即不将旧的PC直存入R14。目标单元,
26、汇编程序计算偏移量。;等待,指令汇编成OxEAFFFFFE;等待,默认条件是“ Always ”;R1 = 0 ?比较;为零,则跳转;反之,继续下一个指令;跳转,调用子程序;R1 = R1 + 1,设置 CPSR 标志;C = 0,调用子程序 3数据处理:数据处理指令仅在条件为真时被执行,参见表4- 4。该指令编码如下图4- 3所示。cond如表4 4中所示的双字母助记符(条件码),如果缺省,默认为AL( Always )。BALhereBthereCMPR1,#0BEQfredBLsub+ROMADDSR1,#1BLCCsubhere11Xidia n Uni versity西安电子科技大学
27、Co nd00L|Opcode |Rn1观1OperandsM 26 25 姑21 20 1916 1512 1 1015:12 Destination register0 Branch1 = Branch witfi link19:16 1st operand registerj = Branch1 = Branch with link20 Sei condition codesD - Do not after condition codes1 - Set condiHon codes24:21 Op&rntlon codes0000 = AND-Rd: = Opl AND Op20001
28、- EOR-Rd: - Op1 EOROp20010 = SUB-Rd: = Op1-Op20011 = RSB-Rd: = Op2-Op10100 = ADD-Rd: = 0p1+0p2 101 = ADC-Rd: = 0p1+0p2+C 0110= SBC-Rd; = OPl-Op2+C-10111 = RSC-Rd: = Op2-Op1+C-11000 = TST-set condition codes on Op1 AND Op21001 = TEO-set condition codes onOP1 EOR Op21010- CUP-sotcondition codes on 0p1
29、-0p1011 = SMNSt CHiiditiunori 0p1+0p2HOO-ORR-Rd:-Op1 OROp21101 MOV-Rd:-Op21110- BIORd:-Op1 AND NOT Op2111 I -MVN-Rd - NOTOp225 Immediate operand0 = Operand 2 is a register1 = Operand 2 ks an immediate value|ShiftRmp:0 2nd operand register118 70| RutjteImm11;O Operand 2 type selection115 407:0 Unsign
30、ed 8 bit imrriedlate value11 _4 Shift applied to Rm11:6 Shift appledto Imm31:2& Condition field图4 3:数据处理指令该指令通过对一或两个操作数进行指定的算术或逻辑运算产生结果。第一个操作数总是一个寄存器(Rn)。根据指令中L (即D25)位的值,第二个操作数可能是一个移位寄存器(Rn)或一个8位循环立即数(Imm)。根据指令中S位的值,确定该指令的结果是否可以保护或更新CPSR中的条件码。确定的运算 (TST( OP1 与 OP2、TEQ( OP1 异或 OP2、CMP( OP1-OP2、CM(OP
31、1+OP2) 不将结果写入 Rd。它们只用执行检测和设置结果中的条件码并总对S位置位。 CPSR 志:12Xidia n Uni versity西安电子科技大学数据处理运算可分为逻辑运算和算术运算,逻辑运算(AND EOR TST TEQ ORR MOVBIC、MVN对操作数的所有相应位或产生结果的操作数执行逻辑运算。如果S位被置位(并且Rd不是R15,见下表),则CPS中的V标志不受影响,C标志将被置位来执行 barrel shifter (或当移位操作为LSL #0时保护),Z标志当且仅当结果全零时被置位,N被置为结果bit31的逻辑值。ARM数据处理指令见下表4 5Assembler M
32、nemonicOP CodeActionAND0000Operandl ANDEOR0001Operandl EOR opercind2WUB0010Operandl - oper日ndERSB0011Operand opeiandlADD0100Operandl + operand 2ADC0101Operandl + operand 2 + carrySBG01 wOperandl - operands + carry -1RSC0111Operand2 - operandl + carry -1TSTwooAs ANDr but result Is nd writtenTEQ1001As
33、 EOR. but result is not writtenCMP1010As SUB, but result Is not writtenCMN1011As ADD, but result Is not writtenORR1100Operandl OR ope rand 2MOV1101Operand2 Operaikll Is Igrored*BIC1110Operandl AND NOT operandZ (Bit dear)MVN1111NCT operard2 opBind1 Is Ignored t表4 5:数据处理指令算术运算(SUB RSB ADD ADC SBC RSC
34、CMN将每个操作数都看作是一个32位的整数(无符号或两个独立的符号,两种情况时一样的)。如果S位被置位(并且Rd不是R15),则CPSF中的V标志在结果的bit31出现溢出时被置位,如果操作数均为无符号数可以不理 会,但如果操作数为两个独立的有符号数则会发出错误提示,C标志会由于执行 ALU的bit31被置位,Z标志当且仅当结果全零时被置位, 数为两个独立的有符号数时指示结果为负)。 移位:当第二个操作数被指定为移位寄存器时, 域指示要执行的移位类型(逻辑左移或右移、 包含在指令的立即域中,或者在另一个寄存器(N标志被置为结果bit31的值(如果认为操作 寄存器的移位操作受指令中的移位域控制。
35、该算术右移或循环右移)。寄存器要移动的值可了R15)。不同移位类型的编码如图4-4所示。13Xidia n Uni versity西安电子科技大学117 6 5 4H116 7 6 5 4|RS|o16:5 Shift type00 = logical left01 = logical right10 = arithmetic right 11 = rotate right11 :7 Shift amount& bit unsigned Integer6:5 Shift type00 = logical left01 - logical right10 = arithin&tlc right
36、11 = rotate right11:8 shift registerShirt amount specified h bottom-tyte or Rs图4-4 : ARM移位操作指定偏移量指令:当指令中指定了偏移量时,它包含了一个5位的区域,其赋值范围为031。逻辑左移(LSL)获取Rm的内容并将每一位移动指定量到更有意义的位置。结果的最不重要位以零填充,Rm的最高位被丢弃,并不映射到结果中,除非当ALU运算处于逻辑状态(见上面)时,丢弃的最不重要的位变为 shifter 的进位输出,并可能锁定 CPSR的S位。例如,LSL #5的LSL #5是一个特例,这里 shifter 进位输出是
37、 CPSFC标志的过去值。Rm的内容被直接 用作第二个操作数。逻辑右移(LSR指令类似,但是Rm的内容被移到结果最不重要的位置。 LSR #5的影响如下图4 6所示。图4 6 :逻辑右移此种移位使得Rm勺第31位有零进位输出。与逻辑左移零一样, 逻辑右移零是多余的,所以汇编程序将LSR #0 (以及ASR #0和ROR #0转换成LSL #0 ,并允许指定LSR #32。14Xidia n Uni versity西安电子科技大学此种移位使得 Rm的bit31重新用作进位输出,并且操作数2的每一位也等于Rm的bit31。所以根据 Rm的bit31的值,结果为全1或全0。循环右移(ROR操作是将逻
38、辑右移操作中移出去的位再引入放置在结果的高端,在逻辑右移中常用零来填充高位。例如,ROR #5如下图4 8所示。算术右移(ASR与逻辑右移类似,不同的是高位被Rm的bit31填充而不是零。这保护图4&循环右移期望给ROR#0的移位域形式用于对barrel shifter的特殊功能,即带扩展的循环右移编 码。这个循环右移是它使用附加的CPSR勺C标志来提供一个要被移位的33位的数量到Rn内容的最高端,参见下图 4 9。图4 9:带扩展循环右移15Xidia n Uni versity西安电子科技大学指定偏移量寄存器只有Rs的最低端字节被用来确定偏移量。Rs可以是除R15外的任何寄存器。如果该字节
39、为零,Rn未改变的内容将被当作第二操作数,并且旧的CPSR勺C标志值将会被作为shifter的进位输出。如果1到31位之间字节有值,移位结果将与指定移位指令的同一个值和移位操作匹配。如果字节中的值大于等于 32,结果为上面所述移位的逻辑扩展:1.LSL 32结果为零,进位输出等于 Rn的0位;2.LSL大于32结果为零,进位为零;3.LSR 32结果为零,进位输出等于 Rn的31位;4.LSF大于32结果为零,进位为零;5.ASR于等于32结果和进位等于 Rn的31位;6.ROR 32吉果等于Rn,进位等于Rm勺31位;7.ROR1结果和进位与ROR1-32相同,这里n大于32 ;因此不断从n
40、中减去32,直到n值在131 之间,见前面。必须使带有控制移位寄存器指令的bit 7为零,该位为1会引起指令为乘或未定乂。立即数循环:立即数循环域是一个4位无符号整数,指定对8位立即数进行移位操作。该值为扩展到32 位的零,然后通过在循环域中的两倍值服从右移。这可以产生许多常数,例如2的幕。写入R15当Rd为除R15#的寄存器时,CPS中的条件码标志可以从前面所述的ALL标志更新。当Rd为R15并且指令中的S标志未置位时,操作结果被放入 R15且CPS不受影响。当Rd为R15且S标志置位时,操作结果被放入 R15,对应于当前模式的 SPS被移入CPSR 这允许自动存储PC和CPSR勺状态改变。
41、这种指令格式在用户模式下不能使用。用R15作操作数如果R15 ( PC)被用于数据处理指令中的一个操作数,可直接使用该寄存器。PC直就是指令地址、加上由于指令预取的8或12个字节。如果指令中指定了移位量,PC为前8个字节。如果用寄存器指定移位量,则PC为前12个字节。 TEQ TST CM和 CM操作码:TEQ TST CMP口CMI不写结果操作结果但置位 CPSR中的标志位。即使助记符中没有指定, 汇编程序也应当总将这些指令的S标志置位。不能使用TEQPf令,它是早期ARM处理器使用的TEQ旨令:代替PSR专移操作。在ARM920中 TEQ的功能是:如果处理器工作在特许模式就将 SPSR_n
42、ode移入CPSR如 果在用户模式什么也不做。指令周期:数据处理指令增加的周期数如下表4-6 :Processing TypeCyclesNormal data processing1SData processing with rGgistcr spcifixl shiK1S 4 11Data processing 期山 PC written2S INData processirxi .vith register specified shift and PC w ritten2S +11表4-6 :增加的循环时间注:S、N和I分别定义为顺序(S-周期)、非顺序(N-周期)和内部(I-周期)。1
43、6这里:condSRd, Rn 和 Rm sRm,或,双字母条件助记符,见表 4一4如果S表示(指CMP, CMN, TEQ, TST),置位条件码.寄存器号表达式如果使用,汇编程序将会产生一个移位的立即8位域来匹配表达式,如果不用会出错Shift name 或 shift name#expressi on,或RRX (带扩展右移1位).ASL, LSL, LSR, ASR, ROR. (ASL与LSL意义相同,它们的汇编码一样)例:ADDEQTEQSSUBR2,R4,R5R4,#3R4,R5,R7,LSR R2PC,R14PC,R14MOVMOVS 4PSR专移(MRS MSR :;如果Z标
44、志置位,使R2=R4+R5;测试R4等于3(S是多余的,由汇编程序自动插入 );通过R2底部字节数逻辑右移 R7,从R5中减去结果,并 ;将答案放入R4从子程序返回从中断返回,并从SPSRT式保存CPSRXidia n Uni versity西安电子科技大学汇编程序句法MOV,MVN (单操作数指令).co ndS Rd, CMP,CMN,TEQ,TST (无结果指令).c ond Rn,AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BICco ndS Rd,R n,该指令仅当条件为真时执行,参见表4 - 4。MRS口 MS脂令来自于数据处理操作的子集,并用TEQ T
45、ST CM和CMP旨令执行,不置位 S标志,编码参见下图 4 10。这些指令允许对CPSI和SPS寄存器存取。MR指令允许将CPS或SPSR_mode的内容移入 通用寄存器。MSI指令允许将通用寄存器的内容移入 CPS或SPSR_mode寄存器。MSI指令也允许将一个立即数或寄存器内容转移到CPS或SPSR_31:20 Condition iFitldMSR (transfer register contents to PSR|312fl 2723 22 2112 114 30Cond |00010PT|101001111|GOOOOOOO| Rm3 0 Source Rpgistr22 Dp
46、iintinti PSRD CPSR1 - SPSR _31:26 Condition FieldMSR (transfer regi&ter contents or immedhte valu to PSR flwg bit$ onlyr3128 27 26 25 24 23 22 2112 H0Cond001|Pd|1 101001111Source opernrKi22 Deslination PSRD = CPSR1 = S PSR_torrent mode25 Immediate Operand0 二I is 三 rRgistpr1 = SP:iR OLrrenl mode-11:0
47、 Source Operand伯4 3Q|Rm 丁GJ Source Reqi-5ter11:4 SaurcQ opfrid is an iiTimdial value仃日7QRotateliriin17:0 Unsianed G bt i miredEite valueI Sj Shift pplipc ro I rimS1:2B Condition Field图4 10: MRS MSR旨令格式保留位:ARM920中只定义了 PSR勺12个位(N Z、C、V、I、F、T和M4:0),其余位保留为将 来的处理器使用。为确保ARM920T和将来处理器之间的最大兼容性,应当遵守下列原则:当改变P
48、SR的值时,应当保护保留位;当检查PSR状态时,程序不应当依赖保留位的特定值,因为将来的处理器可能会将它们认作1或0。18Xidia n Uni versity西安电子科技大学MSR CPSR_all,RmMSR CPSR_flg,RmMSR CPSR_flg,#0 xA0000000MRS Rd,CPSR在特许模式,指令表现为:MSR CPSR_all,RmMSR CPSR_flg,RmMSR CPSR_flg,#0 x50000000MSR SPSR_all,RmMSR SPSR_flg,Rm;CPSR31:28 - Rm31:28;CPSR31:28 - Rm31:28;CPSR31:2
49、8 - 0 xA (set N,C; clear Z,V);Rd31:0 - CPSR31:0;CPSR31:0 - Rm31:0;CPSR31:28 - Rm31:28;CPSR31:28 - 0 x5 (set Z,V; clear N,C);SPSR_31:0- Rm31:0;SPSR_31:28 - Rm31:2819例:下列顺序完成模式改变:;复制CPSR;模式位清零,即将CPSR.M4:0清零;选择新模式;回写修改后的CPSR当目的只是简单地改变 PSR中的条件方式码时,可直接将值写入标志位而不必影响控制 位。下列指令对 N Z、C和V标志置位:MSR CPSR_flg,#0 xF
50、0000000;对所有标志位置位,不考虑它们的过去状态(不影响控制位)不要试图向整个PSR写入8位立即数,因为这种操作不保护保留位。 指令循环周期:PSR转移占用1S增加的周期,这里 S定义为顺序(S-周期)。 汇编语言句法:MRS -将PSF内容转移到寄存器MRSco nd Rd,MSR -将寄存器内容转移到 PSRMSRco nd ,RmMSR -只将寄存器内容转移到 PSF标志位MSRcond ,Rm寄存器内容最重要的4位分别写入N、Z、C和V标志。MSR -只将立即数转移到PSR标志位MSRc ond ,应当用符号表示分别写入 N、Z、C和V标志的最重要4位的32位数值。关键:cond
51、双字母条件助记符,见表 4一4Rd and Rm除R15外的寄存器表达式CPSR, CPSR_all, SPSR 或 SPSR_all. (CPSR 和 CPSR_all 与 SPSR 和SPSR_all意义相同)CPSR_flg 或 SPSR_flg如果使用,汇编程序将会产生一个移位的立即8位域来匹配表达式,如果不用会出错例:在用户模式,指令表现为:BICR0,R0,#0 x1FORRR0,R0,# new_modeMSRCPSR,R0MRS RO,CPSRXidia n Uni versity西安电子科技大学MSR SPSR_flg,#0 xC0000000;SPSR_31:28 - 0
52、xC (set N,Z;clear C,V)MRS Rd,SPSR; Rd31:0 - SPSR_31:0 5乘和带累加的乘(MUL MLA :该指令仅当条件为真时执行,参见表4 4。指令编码见下图4 11。乘和带累加的乘指令使用 8位布氏运算法则执行整形乘法。15:1X)11:83:O Operand ReglBtera 19:16 Destination Register20Set Condition CodeD = Do not after candtlon codes1 - Set eonditon codas21AccuimilateD - Multifrl/ only1 = Mul
53、tply and accurniulale31:2ft Condition Field图4 11 : MUL MLA指令格式指令的乘法形式为Rd:=Rm*Rs Rn不考虑,并被设置为零,以兼容将来可能升级的指令集。带累加的乘法形式为 Rd:=Rm*Rs+Rn保存了在某些环境下的一个外在ADD旨令。两种指令形式均以有符号(两种独立)或无符号整数作操作数工作。32位有符号乘法和无符号乘法的结果仅在高32位不同,低32位结果是一样的。这些指令进产生乘法的低 32位,既可用于有符号乘法,也可用于无符号乘法。例如操作数A 操作数B 结果0XFFFFFFF6 0 x00000014 0 xFFFFFF38
54、1)如果操作数被当作有符号的操作数A为-10,操作数B为20,结果-200被正确地表示为0 xFFFFFF3&2)如果操作数被当作无符号的操作数A为4294967286,操作数B为20,结果为85899345720,即0 x13FFFFFF38,所以最 低32位为 0 xFFFFFF3&操作数限制:目标寄存器Rd不一定与操作数寄存器 Rm一样。R15必须不能被当作操作数或目标寄存 器。所有其它寄存器的组合都会给出正确结果,当需要时Rd、Rn和Rs可用作同一个寄存器。 CPSR标志:可任意置位CPSR勺标志位,它由指令中S位控制。N (负)和Z (零)标志根据结果正确 置位(N等于结果的bit3
55、1位,Z当且仅当结果为零时置位)。 C (进位)标志置位无意义的值 V (溢出)标志不受影响。20Ccnd | 0 0 0 0 0 0卜RdRnRs10 0 1Km3129 2722 21 20 19It 1512 11B 704 3Xidia n Uni versity西安电子科技大学MLA cond S Rd, Rm, Rs, RncondSRd, Rm, Rs and Rn例:MUL R1,R2,R3MLAEQS R1,R2,R3,R4长乘指令执行两个32位操作数整数乘法,并产生64位结果。有符号和无符号乘法带可选指令循环周期MUL指令占用1S+mI周期,MLA指令占用1S+(m+1)I
56、周期,这里S和I分别代表连续(S周期)和内部(I周期)。m执行乘法所需的8位乘数阵列周期数,由Rs指定的乘数操作数控制。其可能值如下:1如果乘数操作数32:8位为全0或全12如果乘数操作数32:16位为全0或全13如果乘数操作数32:24位为全0或全14所有其它情况汇编语言句法MUL cond S Rd, Rm, Rs双字母条件助记符,见表4 一 4如果S出现,置位条件码除R157卜的寄存器表达式;R1:=R2*R3;Con ditio nallyR1:=R2*R3+R4,Setti ng con diti on codes. 6长乘和带累加的长乘(MULL MLAL该指令仅当条件为真时执行,
57、参见表4 - 4。指令编码见下图4 - 12。的累加给出4种变化。刖 2B 2723 22 21如恂 询齿 74 30| 0 小 9 1 U A $ RdHi闵Lo Rw 1 Q G 1 R血11:S3:0 Operand Reglators13:1615:12 Source Destination Recjkters20Sei Condition CodeQ - Do not .iliHr condition co IPS1 Sei ?ondj1icn codes21Accumulate0 = Multiply drilyJ = M jltipiy anc accu22Unsigned0 尸
58、 ungigned1 = Sijrd312B Condition Field图4 12 : MULL MLAL旨令格式21Xidia n Uni versity西安电子科技大学双字母条件助记符,见表 4 一 4 如果S出现,置位条件码 除R157卜的寄存器表达式UMULL R1,R4,R2,R3;R4,R1:=R2*R3乘法形式(UMULL和SMULL占用两个32位数,相乘后得出形式为RdHi,RdLo:=Rm*Rs的结果。64位结果的低32位写入RdLo,结果的高32位写入RdHi。带累加乘法形式(UMLAL和SMLAL占用两个32位数,相乘后再加一个 64位数得出形 式为RdHi,RdLo
59、:=Rm*Rs+RdHi,RdLo的结果。64位加数的低 32从RdLo读取,64位加数的高 32从RdHi读取,64位结果的低 32位写入RdLo,结果的高32位写入RdHi。操作数限制R15不能用作操作数或目标寄存器。RdHi、RdLo和Rn必须指定不同的寄存器。 CPSR标志对CPS中的标志置位是任意的,并受指令中S位控制。N和Z标志根据结果来置位 (N为结果的bit63,Z被置位当且仅当全部 64位为0时)。C和V置为无意义的值。指令循环周期MULL占用1S+(m+1)I周期,MLAL占用1S+(m+2)周期,这里m是执行乘法所需的8位乘数阵 列周期数,由Rs指定的乘数操作数控制。其可
60、能值如下:对有符号指令SMULL SMLAL如果乘数操作数31:8位为全0或全1如果乘数操作数31:16 位为全0或全1如果乘数操作数31:24 位为全0或全1 所有其它情况对无符号指令UMULL UMLAL如果乘数操作数31:8位为全0或全1如果乘数操作数31:16 位为全0或全1如果乘数操作数31:24 位为全0或全1 所有其它情况S和I分别代表连续(S周期)和内部(I周期)。汇编句法表4 - 7.汇编程序句法描述h/lneinonicDescriptionPurpDUMULLcondS RJLo.RdHiUnsigned Multiply Long35 it 32 = 64LVI Al
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论