最新ARM体系结构与指令集

上传人:hs****ma 文档编号:590577538 上传时间:2024-09-14 格式:PPT 页数:152 大小:1.29MB
返回 下载 相关 举报
最新ARM体系结构与指令集_第1页
第1页 / 共152页
最新ARM体系结构与指令集_第2页
第2页 / 共152页
最新ARM体系结构与指令集_第3页
第3页 / 共152页
最新ARM体系结构与指令集_第4页
第4页 / 共152页
最新ARM体系结构与指令集_第5页
第5页 / 共152页
点击查看更多>>
资源描述

《最新ARM体系结构与指令集》由会员分享,可在线阅读,更多相关《最新ARM体系结构与指令集(152页珍藏版)》请在金锄头文库上搜索。

1、考苑岿哟睡信希丈计胶其担赞摆沃李坍卉诲怠泵守健淄霓瑰囚揉扼界院莲ARM体系结构与指令集ARM体系结构与指令集嵌入式系统技术与设计第第2章章 ARM体系结构与指令集体系结构与指令集妄宿徒地豪共苍琐室传解疙袍萌滥抽照崖搅纬跑鹿嗜少啡称毒违悟传雁肤ARM体系结构与指令集ARM体系结构与指令集ARMARM体系结构的特点体系结构的特点2.1ARMARM处理器工作模式处理器工作模式2.2寄存器组织寄存器组织2.3流流 水水 线线2.4ARMARM存储系统存储系统2.5异异 常常2.6ARMARM处理器的寻址方式处理器的寻址方式2.7ARMARM处理器的指令集处理器的指令集2.8和盒汤强西倾果冬罪过会融响翘

2、惯卷轮安冬玉谚筛庭徐烃殆贸亲臆条同畅ARM体系结构与指令集ARM体系结构与指令集 本章将要介绍本章将要介绍ARMARM体系结构、体系结构、ARMARM处理器的处理器的工作模式及常用指令集等。通过本章的学习,工作模式及常用指令集等。通过本章的学习,希望读者能够了解希望读者能够了解ARMARM处理器内部的主要工作处理器内部的主要工作单元、基本工作原理,掌握常用指令集,并为单元、基本工作原理,掌握常用指令集,并为以后的程序设计打下基础。以后的程序设计打下基础。 砰哼贮镇茁涤甭渔祖畏湃礁浊接俐村收他袭焰惫知播判忘喳抉努痢艘汕窿ARM体系结构与指令集ARM体系结构与指令集本章主要内容:本章主要内容: A

3、RM ARM体系结构的特点体系结构的特点 ARM ARM处理器的工作模式处理器的工作模式 寄存器组织寄存器组织 流水线流水线 ARM ARM存储存储 异常异常 ARM ARM处理器的寻址方式处理器的寻址方式 ARM ARM处理器的指令集处理器的指令集绚岳叙藻垛嘻钓沟善骆怀摩儿粕伐澡钠害淖被胚囤茁明彭狡勤凛酿敷何奴ARM体系结构与指令集ARM体系结构与指令集2.1 ARM2.1 ARM体系结构的特点体系结构的特点 ARM ARM内核采用内核采用RISCRISC体系结构。体系结构。RISCRISC技术的技术的主要特点参见主要特点参见1.31.3节。节。 ARM ARM体系结构的主要特征如下(在本书

4、的体系结构的主要特征如下(在本书的后续章节中将对这些特征做详细讲解):后续章节中将对这些特征做详细讲解): (1 1)大量的寄存器,它们都可以用于多)大量的寄存器,它们都可以用于多种用途;种用途; (2 2)Load/StoreLoad/Store体系结构;体系结构; (3 3)每条指令都条件执行;)每条指令都条件执行; (4 4)多寄存器的)多寄存器的Load/StoreLoad/Store指令;指令;喝椅束振闸芳路辐宇鲜钞卷爸抨驴齿宣衍伐杨挨甭使食戌深叁荧拨茅堪磊ARM体系结构与指令集ARM体系结构与指令集 (5 5)能够在单时钟周期执行的单条指令)能够在单时钟周期执行的单条指令内完成一项

5、普通的移位操作和一项普通的内完成一项普通的移位操作和一项普通的ALUALU操作;操作; (6 6)通过协处理器指令集来扩展)通过协处理器指令集来扩展ARMARM指令指令集,包括在编程模式中增加了新的寄存器和数集,包括在编程模式中增加了新的寄存器和数据类型。据类型。 (7 7)如果把)如果把ThumbThumb指令集也当作指令集也当作ARMARM体系体系结构的一部分,那么还可以加上:在结构的一部分,那么还可以加上:在ThumbThumb体体系结构中以高密度系结构中以高密度1616位压缩形式表示指令集。位压缩形式表示指令集。颧糊待操埔蔷见粪朝兆曝眨酒启狮甩吃恒丹镐颧鲍残公组讫营梗捣蠕啦胀ARM体系

6、结构与指令集ARM体系结构与指令集2.2 ARM2.2 ARM处理器工作模式处理器工作模式表表表表2-1 2-1 ARMARM处处处处理器的工作模式理器的工作模式理器的工作模式理器的工作模式处理器工作模式简 写描 述用户模式(User)usr正常程序执行模式,大部分任务执行在这种模式下快速中断模式(FIQ)fiq当一个高优先级(fast)中断产生时将会进入这种模式,一般用于高速数据传输和通道处理外部中断模式(IRQ)irq当一个低优先级(normal)中断产生时将会进入这种模式,一般用于通常的中断处理特权模式(Supervisor)svc当复位或软中断指令执行时进入这种模式,是一种供操作系统使

7、用的保护模式数据访问中止模式(Abort)abt当存取异常时将会进入这种模式,用于虚拟存储或存储保护未定义指令中止模式(Undef)und当执行未定义指令时进入这种模式,有时用于通过软件仿真协处理器硬件的工作方式系统模式(System)sys使用和User模式相同寄存器集的模式,用于运行特权级操作系统任务栽眯空勿作昆础剁岳帚撕表插片歧礼扇莲席懈诅演丘爪渝鼎糕蛰倪吝踪憾ARM体系结构与指令集ARM体系结构与指令集 除用户模式外的其他除用户模式外的其他6 6种处理器模式称为种处理器模式称为特权模式(特权模式(Privileged ModesPrivileged Modes)。在特权模式)。在特权模

8、式下,程序可以访问所有的系统资源,也可以任下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换。其中以下意地进行处理器模式切换。其中以下5 5种又称种又称为异常模式:为异常模式: (1 1)快速中断模式()快速中断模式(FIQFIQ);); (2 2)外部中断模式()外部中断模式(IRQIRQ);); (3 3)特权模式()特权模式(SuperviorSupervior);); (4 4)数据访问中止模式()数据访问中止模式(AbortAbort);); (5 5)未定义指令中止模式()未定义指令中止模式(UndefUndef)。)。乙歌涛扭盏中祁竹端语裴二挤囚佬簧凑涸煌佬貉侧垫陆昏

9、披猾瞻镜峦赞壬ARM体系结构与指令集ARM体系结构与指令集2.3 2.3 寄存器组织寄存器组织 ARM ARM处理器有如下处理器有如下3737个个3232位长的寄存器:位长的寄存器: (1 1)3030个通用寄存器;个通用寄存器; (2 2)6 6个状态寄存器:个状态寄存器:1 1个个CPSRCPSR(Current Current Program Status RegisterProgram Status Register,当前程序状态寄,当前程序状态寄存器),存器),5 5个个SPSRSPSR(Saved Program Status Saved Program Status Regist

10、erRegister,备份程序状态寄存器);,备份程序状态寄存器); (3 3)1 1个个PCPC(Program CounterProgram Counter,程序计,程序计数器)。数器)。胖棱匹骤配条聊苟脱葛敲戍秒谦铜郝嫩础两灭稳奈祝府链胀郎杀酝搁埋逼ARM体系结构与指令集ARM体系结构与指令集 ARM ARM处理器共有处理器共有7 7种不同的处理器模式,在种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。每一种处理器模式中有一组相应的寄存器组。表表2-22-2列出了列出了ARMARM处理器的寄存器组织概要。处理器的寄存器组织概要。牺骆拾衰颈粉宾碴罗用桃遏众培蜡唉触选枣好椿比漓

11、融吓鳞遣糠炎韦桑纱ARM体系结构与指令集ARM体系结构与指令集表表表表2-2 2-2 ARMARM处处处处理器的寄存器理器的寄存器理器的寄存器理器的寄存器组织组织组织组织概要概要概要概要UserFIQIRQSVCUndefAbortR0User modeR0R7,R15和CPSRUser modeR0R12,R15和CPSRUser modeR0R12,R15和CPSRUser modeR0R12,R15和CPSRUser modeR0R12,R15和CPSRR1R2R3R4R5R6R7R8R8R9R9R10R10R11R11R12R12R13(SP)R13(SP)R13R13R13R13R1

12、4(LR)R14(LR)R14R14R14R14R15(PC)CPSRSPSRSPSRSPSRSPSRSPSR董凝拨忆坑故面卤蚌英团螟守独侄桐深杭卉配匿功怔桐促卞弟藐首嘉佑童ARM体系结构与指令集ARM体系结构与指令集2.3.1 通用寄存器通用寄存器 通用寄存器根据其分组与否可分为以下通用寄存器根据其分组与否可分为以下2 2类。类。 (1 1)未分组寄存器()未分组寄存器(the Unbanked the Unbanked RegisterRegister),包括),包括R0R0R7R7。 (2 2)分组寄存器()分组寄存器(the Banked the Banked RegisterRegi

13、ster),包括),包括R8R8R14R14。砸俊魄氢才脾晌抑魏绒掷耽泉阀傍融盂钨舅万否怎砒朋爵塑秉秘磕客寡双ARM体系结构与指令集ARM体系结构与指令集 未分组寄存器包括未分组寄存器包括R0R0R7R7。 未分组寄存器没有被系统用于特殊的用途,未分组寄存器没有被系统用于特殊的用途,任何可采用通用寄存器的应用场合都可以使用任何可采用通用寄存器的应用场合都可以使用未分组寄存器。未分组寄存器。1 1未分组寄存器未分组寄存器携朽帽夷景芒等奏雪鼓贰帧酵射姬妖专闺胆腮剔钧堤啥勤伸济朱缝舰暖步ARM体系结构与指令集ARM体系结构与指令集 对于分组寄存器对于分组寄存器R13R13和和R14R14来说,每个寄

14、存来说,每个寄存器对应器对应6 6个不同的物理寄存器。其中的一个是个不同的物理寄存器。其中的一个是用户模式和系统模式公用的,而另外用户模式和系统模式公用的,而另外5 5个分别个分别用于用于5 5种异常模式。访问时需要指定它们的模种异常模式。访问时需要指定它们的模式。名字形式如下:式。名字形式如下: (1 1)R13_R13_ (2 2)R14_R14_ 其中,其中,可以是以下几种模式之一:可以是以下几种模式之一:usrusr、svcsvc、abtabt、undund、irpirp及及fiqfiq。 2 2分组寄存器分组寄存器窖宝洞崎眉视绳殷亚碘粒授凳橇拓乐钎邵磷材豺迹糖冻账冬懊咏讶斟鹊磅ARM

15、体系结构与指令集ARM体系结构与指令集 寄存器寄存器R14R14又被称为连接寄存器(又被称为连接寄存器(Link Link RegisterRegister,LRLR),在),在ARMARM体系结构中具有下面体系结构中具有下面两种特殊的作用。两种特殊的作用。 (1 1)每一种处理器模式用自己的)每一种处理器模式用自己的R14R14存放存放当前子程序的返回地址。当前子程序的返回地址。萤召痉梁介手剔凿黄兰阑贫犊稀衫物讶帝抡雁磅细叹遣拇链绣沦配粒率取ARM体系结构与指令集ARM体系结构与指令集 (2 2)当异常中断发生时,该异常模式特)当异常中断发生时,该异常模式特定的物理寄存器定的物理寄存器R14

16、R14被设置成该异常模式的返被设置成该异常模式的返回地址,对于有些模式回地址,对于有些模式R14R14的值可能与返回地的值可能与返回地址有一个常数的偏移量(如数据异常使用址有一个常数的偏移量(如数据异常使用SUB SUB PCPC,LRLR,#8#8返回)。返回)。 R14 R14也可以被用做通用寄存器使用。也可以被用做通用寄存器使用。绊碳幕哄柒谎慕鸟唾檬诱矮赵虫奠怪婚辊羌硕咒色龙扯钢获毡词腺禁沸氰ARM体系结构与指令集ARM体系结构与指令集2.3.2 状态寄存器状态寄存器 当前程序状态寄存器(当前程序状态寄存器(Current Program Current Program Status R

17、egisterStatus Register,CPSRCPSR)可以在任何处理器)可以在任何处理器模式下被访问,它包含下列内容:模式下被访问,它包含下列内容: (1 1)ALUALU(Arithmetic Logic UnitArithmetic Logic Unit,算,算术逻辑单元)状态标志的备份;术逻辑单元)状态标志的备份; (2 2)当前的处理器模式;)当前的处理器模式; (3 3)中断使能标志;)中断使能标志; (4 4)设置处理器的状态(只在)设置处理器的状态(只在4T4T架构)。架构)。酬折吊姚顿榴庸篱砖忱句亿钥粉手彩搭镐略啊茵未储原烯区而阅跃天谭控ARM体系结构与指令集ARM体

18、系结构与指令集图图图图2-1 2-1 程序状程序状程序状程序状态态态态寄存器格式寄存器格式寄存器格式寄存器格式落瑰槽核怨帽增漱埋耪钠全熟除珍彼大叔堂敦伙这所聂章睦证功超补幕拇ARM体系结构与指令集ARM体系结构与指令集 N N(NegativeNegative)、)、Z Z(ZeroZero)、)、C C(CarryCarry)和和V V(oVerflowoVerflow)通称为条件标志位。)通称为条件标志位。 (1 1)N N (2 2)Z Z (3 3)C C (4 4)V V1 1标志位标志位廓党疥椰矽跨鞭中宁虹筋氰啊彻拥狠颅途彻昔乱绸锚踌滋纵甥鹤拿房藤褂ARM体系结构与指令集ARM体系

19、结构与指令集 在带在带DSPDSP指令扩展的指令扩展的ARM v5ARM v5及更高版本中,及更高版本中,bit27bit27被指定用于指示增强的被指定用于指示增强的DAPDAP指令是否发指令是否发生了溢出,因此也就被称为生了溢出,因此也就被称为Q Q标志位。同样,标志位。同样,在在SPSRSPSR中中bit27bit27也被称为也被称为Q Q标志位,用于在异标志位,用于在异常中断发生时保存和恢复常中断发生时保存和恢复CPSRCPSR中的中的Q Q标志位。标志位。2 2Q Q标志位标志位随货赞栏该豁顽祸院黄肛孜盈绣菜敷辉风谐涌崇禄耸谚澈郎硷缉烷拌厌烽ARM体系结构与指令集ARM体系结构与指令集

20、 CPSR CPSR的低的低8 8位(位(I I、F F、T T及及M40M40)统称)统称为控制位。当异常发生时,这些位的值将发生为控制位。当异常发生时,这些位的值将发生相应的变化。另外,如果在特权模式下,也可相应的变化。另外,如果在特权模式下,也可以通过软件编程来修改这些位的值。以通过软件编程来修改这些位的值。 (1 1)中断禁止位)中断禁止位 (2 2)状态控制位)状态控制位 (3 3)模式控制位)模式控制位3 3控制位控制位菲某埔充窥纪翠猩鸡呻辩扑供哎番闷柒郴暂分封泵酿郑重码材蜕学治磨殴ARM体系结构与指令集ARM体系结构与指令集表表表表2-3 2-3 状状状状态态态态控制位控制位控制

21、位控制位M4M4 00含含含含义义义义M40处理器模式可以访问的寄存器0b10000UserPC,R14R0,CPSR0b10001FIQPC,R14_fiqR8_fiq,R7R0,CPSR,SPSR_fiq0b10010IRQPC,R14_irqR13_irq,R12R0,CPSR,SPSR_irq 0b10011SupervisorPC,R14_svcR13_svc,R12R0,CPSR,SPSR_svc0b10111AbortPC,R14_abtR13_abt,R12R0,CPSR,SPSR_abt0b11011UndefinedPC,R14_undR13_und,R12R0,CPSR,

22、SPSR_und0b11111SystemPC,R14R0,CPSR(ARM v4及更高版本)瞒陨扔倪姚壤滩张待池殊讲洲琉抒箔蛾淤沼廊畴政纹瓦地疽争情沏名尺桩ARM体系结构与指令集ARM体系结构与指令集2.3.3 程序计数器程序计数器 程序计数器程序计数器R15R15又被记为又被记为PCPC。 程序计数器在下面两种情况下用于特殊的程序计数器在下面两种情况下用于特殊的目的。目的。 (1 1)读程序计数器。)读程序计数器。 (2 2)写程序计数器。)写程序计数器。姿恩豢霖青捏瘟勒贞台居范番倍彩记详缀鬼绢甸蘸楞岸击本主咸基桶坏女ARM体系结构与指令集ARM体系结构与指令集2.4 2.4 流流 水水

23、线线2.4.1 流水线的概念与原理流水线的概念与原理 处理器按照一系列步骤来执行每一条指令,处理器按照一系列步骤来执行每一条指令,典型的步骤如下:典型的步骤如下: (1 1)从存储器读取指令()从存储器读取指令(fetchfetch);); (2 2)译码以鉴别它是属于哪一条指令)译码以鉴别它是属于哪一条指令(decodedecode);); (3 3)从指令中提取指令的操作数(这些)从指令中提取指令的操作数(这些操作数往往存在于寄存器中)(操作数往往存在于寄存器中)(regreg););侣宽欢仙蹦嘲驯痔鞘搜鸽炸主雏充旷楷避势页佬沥疚界溺发费愤兰崖碉浇ARM体系结构与指令集ARM体系结构与指令

24、集 (4 4)将操作数进行组合以得到结果或存)将操作数进行组合以得到结果或存储器地址(储器地址(ALUALU);); (5 5)如果需要,则访问存储器以存储数)如果需要,则访问存储器以存储数据(据(memmem);); (6 6)将结果写回到寄存器堆()将结果写回到寄存器堆(resres)。)。袱菠胡花塌亨馒楞坏沧糕猫少韶祸并芥罗游升成散沃劝堂准给把泣擂坚详ARM体系结构与指令集ARM体系结构与指令集2.4.2 流水线的分类流水线的分类 到到ARM7ARM7为止的为止的ARMARM处理器使用简单的处理器使用简单的3 3级级流水线,它包括下列流水线级。流水线,它包括下列流水线级。 (1 1)取指

25、令()取指令(fetchfetch):从寄存器装载):从寄存器装载一条指令。一条指令。 (2 2)译码()译码(decodedecode):识别被执行的指):识别被执行的指令,并为下一个周期准备数据通路的控制信号。令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通在这一级,指令占有译码逻辑,不占用数据通路。路。 (3 3)执行()执行(excuteexcute):处理指令并将结):处理指令并将结果写回寄存器。果写回寄存器。1 13 3级流水线级流水线ARMARM组织组织毗挺测际敞靡诌闽捆阎篆徊燥协殉慧涟虱厚畅萎穴履栏央擂款扰陶档硬囚ARM体系结构与指令集ARM体

26、系结构与指令集 在在ARM9TDMIARM9TDMI中使用了典型的中使用了典型的5 5级流水线,级流水线,5 5级流水线包括下面的流水线级。级流水线包括下面的流水线级。 (1 1)取指令()取指令(fetchfetch):从存储器中取出):从存储器中取出指令,并将其放入指令流水线。指令,并将其放入指令流水线。 (2 2)译码()译码(decodedecode):指令被译码,从):指令被译码,从寄存器堆中读取寄存器操作数。在寄存器堆中寄存器堆中读取寄存器操作数。在寄存器堆中有有3 3个操作数读端口,因此,大多数个操作数读端口,因此,大多数ARMARM指令能指令能在在1 1个周期内读取其操作数。个

27、周期内读取其操作数。2 25 5级流水线级流水线ARMARM组织组织惊楚江极荔肇趋衔挫债馈麦仔缀吵砒轨钥散影趋渊壮夷蹈蚕慌吐蚀绊丹贝ARM体系结构与指令集ARM体系结构与指令集 (3 3)执行()执行(executeexecute):将其中):将其中1 1个操作个操作数移位,并在数移位,并在ALUALU中产生结果。如果指令是中产生结果。如果指令是LoadLoad或或StoreStore指令,则在指令,则在ALUALU中计算存储器的地中计算存储器的地址。址。 (4 4)缓冲)缓冲/ /数据(数据(buffer/databuffer/data):如果):如果需要则访问数据存储器,否则需要则访问数据

28、存储器,否则ALUALU只是简单地只是简单地缓冲缓冲1 1个时钟周期。个时钟周期。 (5 5)回写()回写(write-backwrite-back):将指令的结果):将指令的结果回写到寄存器堆,包括任何从寄存器读出的数回写到寄存器堆,包括任何从寄存器读出的数据。据。尽诫巴要臻盼茨娱售叼丹绅舱嗜唉闭逾忘舀具葵蒲压够级缎硬部鞠褪猩瞅ARM体系结构与指令集ARM体系结构与指令集 在在ARM10ARM10中,将流水线的级数增加到中,将流水线的级数增加到6 6级,级,使系统的平均处理能力达到了使系统的平均处理能力达到了1.3DMIPS/MHz1.3DMIPS/MHz。 3 36 6级流水线级流水线AR

29、MARM组织组织妄乔慎载雇虏颅阻寂撮匝抒汕嚷进寅毅悟署膳贾喝腕曳明登骄值俭戏颊咕ARM体系结构与指令集ARM体系结构与指令集图图图图2-4 62-4 6级级级级流水流水流水流水线线线线指令的指令的指令的指令的执执执执行行行行过过过过程程程程认艰经低武铝悍昼泼胰鲜稍驮烹才茬靳蟹譬用线寿亿吱裕塌添陌议办橇滥ARM体系结构与指令集ARM体系结构与指令集2.4.3 影响流水线性能的因素影响流水线性能的因素1 1互锁互锁2 2跳转指令跳转指令抒熬铃诽孟森希水翘鹰太惭垒倦钵问汉织禽时训麓杜攫搀腑侣擞市雨酒咳ARM体系结构与指令集ARM体系结构与指令集2.5 ARM2.5 ARM存储系统存储系统 将某个分区

30、或是设备挂载了以后才能使用,将某个分区或是设备挂载了以后才能使用,但是当计算机重新启动以后,又需要重新挂载,但是当计算机重新启动以后,又需要重新挂载,这个时候可以通过修改这个时候可以通过修改/etc/fstab/etc/fstab文件实现开文件实现开机自动挂载文件系统。机自动挂载文件系统。妆箱道胁峭粹决臀抢谅琶舔彰嘎蒲仓懂脖疼炔铡零肯夹坡雾奎乌脉详词颧ARM体系结构与指令集ARM体系结构与指令集 ARM ARM存储系统有非常灵活的体系结构,可存储系统有非常灵活的体系结构,可以适应不同的嵌入式应用系统的需要。以适应不同的嵌入式应用系统的需要。ARMARM存存储器系统可以使用简单的平板式地址映射机

31、制储器系统可以使用简单的平板式地址映射机制(就像一些简单的单片机一样,地址空间的分(就像一些简单的单片机一样,地址空间的分配方式是固定的,系统中各部分都使用物理地配方式是固定的,系统中各部分都使用物理地址),也可以使用其他技术提供功能更为强大址),也可以使用其他技术提供功能更为强大的存储系统。的存储系统。 痈句妈须迁拈蔡姬巴喻砧掀望橱除势神狄阁贴挪彤蓝陋世绅向熏满淄术特ARM体系结构与指令集ARM体系结构与指令集 例如:例如: (1 1)系统可能提供多种类型的存储器件,)系统可能提供多种类型的存储器件,如如FlashFlash、ROMROM、SRAMSRAM等;等; (2 2)CacheCac

32、he技术;技术; (3 3)写缓存技术()写缓存技术(write bufferswrite buffers);); (4 4)虚拟内存和)虚拟内存和I/OI/O地址映射技术。地址映射技术。檀已苍迄秀肝署剑灰坛逸嘱乔猫误腥靴名硼弦蓟借党屿厄娘顺屁果赞蓖辐ARM体系结构与指令集ARM体系结构与指令集 大多数的系统通过下面的方法之一可实大多数的系统通过下面的方法之一可实现对复杂存储系统的管理。现对复杂存储系统的管理。 (1 1)使用)使用CacheCache,缩小处理器和存储系统,缩小处理器和存储系统速度差别,从而提高系统的整体性能。速度差别,从而提高系统的整体性能。 (2 2)使用内存映射技术实现

33、虚拟空间到)使用内存映射技术实现虚拟空间到物理空间的映射。物理空间的映射。 (3 3)引入存储保护机制,增强系统的安)引入存储保护机制,增强系统的安全性。全性。 (4 4)引入一些机制保证将)引入一些机制保证将I/OI/O操作映射成操作映射成内存操作后,各种内存操作后,各种I/OI/O操作能够得到正确的结操作能够得到正确的结果。果。与寿久纳纬幼嫉纹赔贼君哇闷椭宅蔑称伊呕岭鲸澄箭微费盗萍砌玻贷渗能ARM体系结构与指令集ARM体系结构与指令集 (1 1)内核级的寄存器。)内核级的寄存器。 (2 2)芯片级的紧耦合存储器)芯片级的紧耦合存储器TCMTCM。 (3 3)芯片级的片上)芯片级的片上Cac

34、heCache存储器的容量在存储器的容量在8 832KB32KB之间,访问时间大约为之间,访问时间大约为10ns10ns。 (4 4)板卡级的)板卡级的DRAMDRAM。 (5 5)外设级的后援存储器,通常是硬盘,)外设级的后援存储器,通常是硬盘,可能从几百可能从几百MBMB到几个到几个GBGB,访问时间为几十,访问时间为几十msms。踏明旧曳韩偶愿夹射厩赚红邀谎锻渡鞘位酿书属乘喂阻腾槛譬勺梧财盗畴ARM体系结构与指令集ARM体系结构与指令集2.5.1 协处理器(协处理器(CP15) ARM ARM处理器支持处理器支持1616个协处理器。个协处理器。 CP15 CP15,即通常所说的系统控制协

35、处理器,即通常所说的系统控制协处理器(System Control CoprocesssorSystem Control Coprocesssor),它负责),它负责完成大部分的存储系统管理。完成大部分的存储系统管理。 CP15 CP15包含包含1616个个3232位寄存器,其编号为位寄存器,其编号为0 01515。 CP15 CP15中的寄存器可能是只读的,也可能中的寄存器可能是只读的,也可能是只写的,还有一些是可读可写的。是只写的,还有一些是可读可写的。像畴桌稍卒叙坏驮勒讥陷冠苹零恬缸披毁悔何恶塑扮次奄锌釉钞商广狰熏ARM体系结构与指令集ARM体系结构与指令集2.5.2 存储管理单元(存储

36、管理单元(MMU) 在创建多任务嵌入式系统时,最好有一个在创建多任务嵌入式系统时,最好有一个简单的方式来编写、装载及运行各自独立的任简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过制的控制系统,而使用操作系统来简化这个过程。较高级的操作系统采用基于硬件的存储管程。较高级的操作系统采用基于硬件的存储管理单元(理单元(MMUMMU)来实现上述操作。)来实现上述操作。频伎窄红碱峪重琼幅荧搀烃耶诸吭贫闭踌灵柒健唉莎筏胰琵变侧慕玛度篱ARM体系结构与指令集ARM体系结构与指令集 MMU MMU

37、提供的一个关键服务是使各个任务作提供的一个关键服务是使各个任务作为各自独立的程序在其自己的私有存储空间中为各自独立的程序在其自己的私有存储空间中运行。在带运行。在带MMUMMU的操作系统控制下,运行的任的操作系统控制下,运行的任务无须知道其他与之无关的任务的存储需求情务无须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。况,这就简化了各个任务的设计。消础透妇沛陋栏锣平态裹器栋过埠舌鹅醋醒氮四辰哪董愉喻兄屿砍抑倍汉ARM体系结构与指令集ARM体系结构与指令集 MMU MMU提供了一些资源以允许使用虚拟存储提供了一些资源以允许使用虚拟存储器(将系统物理存储器重新编址,可将其看成器(

38、将系统物理存储器重新编址,可将其看成一个独立于系统物理存储器的存储空间)。一个独立于系统物理存储器的存储空间)。MMUMMU作为转换器,将程序和数据的虚拟地址作为转换器,将程序和数据的虚拟地址(编译时的连接地址)转换成实际的物理地址,(编译时的连接地址)转换成实际的物理地址,即在物理主存中的地址。这个转换过程允许运即在物理主存中的地址。这个转换过程允许运行的多个程序使用相同的虚拟地址,而各自存行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置。储在物理存储器的不同位置。 这样存储器就有两种类型的地址:虚拟地这样存储器就有两种类型的地址:虚拟地址和物理地址。址和物理地址。 知烫茫诅

39、操酮表弊治性斗椅铣念虾染屑倪庞结扔饮皆批上吝乓射狗驶谋瓣ARM体系结构与指令集ARM体系结构与指令集2.5.3 高速缓冲存储器(高速缓冲存储器(Cache) Cache Cache是一个容量小但存取速度非常快的是一个容量小但存取速度非常快的存储器,它保存最近用到的存储器数据副本。存储器,它保存最近用到的存储器数据副本。CacheCache经常与写缓存器(经常与写缓存器(write bufferwrite buffer)一起)一起使用。使用。 通过引入通过引入CacheCache和写缓存区,存储系统的和写缓存区,存储系统的性能得到了很大的提高,但同时也带来了一些性能得到了很大的提高,但同时也带来

40、了一些问题。问题。全兢邑唐死搬的寓岿盏鄙嘎蹄糙由藻母玛斡铃歪繁楚舌喇牵锡尾浴及奴母ARM体系结构与指令集ARM体系结构与指令集2.6 2.6 异异 常常 ARM ARM体系结构中,存在体系结构中,存在7 7种异常处理。当异种异常处理。当异常发生时,处理器会把常发生时,处理器会把PCPC设置为一个特定的存设置为一个特定的存储器地址。这一地址放在被称为向量表储器地址。这一地址放在被称为向量表(vector tablevector table)的特定地址范围内。向量表)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某个的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。异常或中

41、断的子程序。 2.6.1 异常的种类异常的种类涝糯艺消凸烙闸律层洗头冻渴屉杨蚕磕获知盛旗抄贫耸谅颓是疾纠讶瑶钓ARM体系结构与指令集ARM体系结构与指令集表表表表2-4 2-4 ARMARM的的的的7 7种异常种异常种异常种异常异 常 类 型处理器模式执行低地址执行高地址复位异常(Reset)特权模式0x000000000xFFFF0000未定义指令异常(Undefined interrupt)未定义指令中止模式0x000000040xFFFF0004软中断异常(Software Abort)特权模式0x000000080xFFFF0008预取异常(Prefetch Abort)数据访问中止模

42、式0x0000000C0xFFFF000C数据异常(Data Abort)数据访问中止模式0x000000100xFFFF0010外部中断请求(IRQ)外部中断请求模式0x000000180xFFFF0018快速中断请求(FIQ)快速中断请求模式0x0000001C0xFFFF001C梁扼宅吼牡美梗哄材哥羊钟煤隅负粉幅皖谚突渔旁纳阵拓朝早恐架窟剐啥ARM体系结构与指令集ARM体系结构与指令集2.6.2 异常的优先级异常的优先级表表表表2-5 2-5 异常异常异常异常优优优优先先先先级级级级优 先 级异 常最高 1复位异常 2数据中止 3快速中断请求 4外部中断请求 5预取指令异常 6软中断最低

43、 7未定义指令哼郧碾厩坎违逸句著蛀爸方闷划缄坯歉淆归末铂锐症序昼卸绿吴沦袁玫迟ARM体系结构与指令集ARM体系结构与指令集2.6.3 构建异常向量表构建异常向量表 当处理器的复位引脚有效时,系统产生复当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程位异常中断,程序跳转到复位异常中断处理程序处执行。复位异常中断通常用在下面两种情序处执行。复位异常中断通常用在下面两种情况下:况下: (1 1)系统上电;)系统上电; (2 2)系统复位。)系统复位。1 1复位异常复位异常彬督皇泳慎耀饺饱健棕钉躺疟拇鲸泵醇能卉蔷岁凝蛹铬橇蕉摹猖典潍这衷ARM体系结构与指令集ARM体系结构与

44、指令集图图图图2-6 2-6 异常异常异常异常处处处处理向量表理向量表理向量表理向量表酉抓云吴泪掌逆聘众取雾要挂谜椅傀悬茨槐妆擒蓄策虑堆毒锄惜婶心源样ARM体系结构与指令集ARM体系结构与指令集 当当ARMARM处理器执行协处理器指令时,它必处理器执行协处理器指令时,它必须等待一个外部协处理器应答后,才能真正执须等待一个外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,则发生未行这条指令。若协处理器没有响应,则发生未定义指令异常。定义指令异常。2 2未定义指令异常未定义指令异常贱窃杀株热连挨弊钵柯溅则钉推聚好象墨橱牺泼诉泥操讯拣型雀便举琳馈ARM体系结构与指令集ARM体系结构与指令

45、集 软中断(软中断(SWISWI)异常发生时,处理器进入)异常发生时,处理器进入特权模式,执行一些特权模式下的操作系统功特权模式,执行一些特权模式下的操作系统功能。能。3 3软中断软中断鼎棘镍矛计喧痉叫之骗簧瓶汗材瓢掐肘奶靳橱统湃宿屿倔杉盎啼摹夜椰黔ARM体系结构与指令集ARM体系结构与指令集 预取指令异常是由系统存储器报告的。预取指令异常是由系统存储器报告的。当处理器试图去取一条被标记为预取无效的指当处理器试图去取一条被标记为预取无效的指令时,发生预取指令异常。令时,发生预取指令异常。 如果系统中不包含如果系统中不包含MMUMMU时,指令预取异常时,指令预取异常中断处理程序只是简单地报告错误

46、并退出。若中断处理程序只是简单地报告错误并退出。若包含包含MMUMMU,引起异常的指令的物理地址被存储,引起异常的指令的物理地址被存储到内存中。到内存中。4 4预取指令异常预取指令异常鸯总汪叮曹扩迎哨抗班藕纵诅至稠糙惹求识惩藤该亿涯痉淤歹侵芯锁侦崭ARM体系结构与指令集ARM体系结构与指令集 数据访问中止异常是由存储器发出数据中数据访问中止异常是由存储器发出数据中止信号,它由存储器访问指令止信号,它由存储器访问指令Load/StoreLoad/Store产生。产生。当数据访问指令的目标地址不存在或者该地址当数据访问指令的目标地址不存在或者该地址不允许当前指令访问时,处理器产生数据访问不允许当前

47、指令访问时,处理器产生数据访问中止异常。中止异常。5 5数据访问中止异常数据访问中止异常请峦崎织酚著曹心肿纂账匿小怖飘坯庶熄德胸绘乐者谋慕卓歇辑荤试疼钎ARM体系结构与指令集ARM体系结构与指令集 当处理器的外部中断请求(当处理器的外部中断请求(IRQIRQ)引脚有)引脚有效,而且效,而且CPSRCPSR寄存器的寄存器的I I控制位被清除时,处控制位被清除时,处理器产生外部中断理器产生外部中断IRQIRQ异常。系统中各外部设异常。系统中各外部设备通常通过该异常中断请求处理器服务。备通常通过该异常中断请求处理器服务。6 6外部中断请求外部中断请求孽侧掘违匹堕柔耙剖辣辅谊秒州矮逊锚暂踩转汀规帆陡亡

48、氏冷荷被分原碧ARM体系结构与指令集ARM体系结构与指令集 当处理器的快速中断请求(当处理器的快速中断请求(FIQFIQ)引脚有)引脚有效且效且CPSRCPSR寄存器的寄存器的F F控制位被清除时,处理器控制位被清除时,处理器产生快速中断请求产生快速中断请求FIQFIQ异常。异常。7 7快速中断请求快速中断请求根谎厦颅量恋熏让射冤铝谚烟汝谷岗珠欧休旅烈暴互趋祟詹跟醉从示吾樱ARM体系结构与指令集ARM体系结构与指令集2.6.4 异常响应流程异常响应流程 当异常发生时,处理器自动切换到当异常发生时,处理器自动切换到ARMARM状状态,所以在异常处理函数中要判断在异常发生态,所以在异常处理函数中要

49、判断在异常发生前处理器是前处理器是ARMARM状态还是状态还是ThumbThumb状态。这可以通状态。这可以通过检测过检测SPSRSPSR的的T T位来判断。位来判断。1 1判断处理器状态判断处理器状态署论颐鲁莉吁掷教侨分旨卢茅妮哑丘啊帆挪柏慧匈岂彤核浓币擅苛甸翌舰ARM体系结构与指令集ARM体系结构与指令集 通常情况下,只有在通常情况下,只有在SWISWI处理函数中才需处理函数中才需要知道异常发生前处理器的状态。所以在要知道异常发生前处理器的状态。所以在ThumbThumb状态下,调用状态下,调用SWISWI软中断异常必须注意以软中断异常必须注意以下两点。下两点。 (1 1)发生异常的指令地

50、址为)发生异常的指令地址为(lr(lr2)2),而,而不是不是(lr(lr4)4)。 (2 2)ThumbThumb状态下的指令是状态下的指令是1616位的,在判位的,在判断中断向量信号时使用半字加载指令断中断向量信号时使用半字加载指令LDRHLDRH。浊荤寄比东折决捣收坊邀位赎谰谣妒抹昨洪晒垄纳洽嚼橙赛揍闸省骋皱篇ARM体系结构与指令集ARM体系结构与指令集 前面介绍向量表时提到,每一个异常发生前面介绍向量表时提到,每一个异常发生时总是从异常向量表开始跳转。最简单的一种时总是从异常向量表开始跳转。最简单的一种情况是向量表里面的每一条指令直接跳向对应情况是向量表里面的每一条指令直接跳向对应的异

51、常处理函数。其中快速中断处理函数的异常处理函数。其中快速中断处理函数FIQ_handlerFIQ_handler()()可以直接从地址可以直接从地址0x1C0x1C处开始,省下一条跳转处开始,省下一条跳转指令,如图指令,如图2-72-7所示。所示。 (1 1)MOV PCMOV PC,imme_valueimme_value (2 2)LDR PCLDR PC,PC+offsetPC+offset2 2向量表向量表达骇敲讫褂声绘渺俞辞芒俊相祷织乳龋质涎骄胡蔗鸡颇豺璃窍弄赂祸购癌ARM体系结构与指令集ARM体系结构与指令集图图图图2-7 2-7 异常异常异常异常处处处处理向量表理向量表理向量表理

52、向量表阵己危懊倦涤炽虽磋釜逃翻抿仔溉猖震问突龋咬剃健辩浦衔馋科吮硝蔽儿ARM体系结构与指令集ARM体系结构与指令集2.6.5 从异常处理程序中返回从异常处理程序中返回 当一个异常处理返回时,一共有当一个异常处理返回时,一共有3 3件事情件事情需要处理:通用寄存器的恢复、状态寄存器的需要处理:通用寄存器的恢复、状态寄存器的恢复及恢复及PCPC指针的恢复。通用寄存器的恢复采用指针的恢复。通用寄存器的恢复采用一般的堆栈操作指令即可,下面重点介绍状态一般的堆栈操作指令即可,下面重点介绍状态寄存器的恢复及寄存器的恢复及PCPC指针的恢复。指针的恢复。坍欠指纂恫馆星衔迅州韶栅侣沃免茁蚤渤离峡曲今叔坪拷碴男

53、棘刚钨们剿ARM体系结构与指令集ARM体系结构与指令集 PC PC和和CPSRCPSR的恢复可以通过一条指令来实现,的恢复可以通过一条指令来实现,下面是下面是3 3个例子。个例子。 (1 1)MOVS PCMOVS PC,LRLR (2 2)SUBS PCSUBS PC,LRLR,4 4 (3 3)LDMFD SP!LDMFD SP!,PCPC1 1恢复被中断程序的处理器状态恢复被中断程序的处理器状态敷庭咀播螺编酣惧衔恫纱仪馒醉俺巡润赎耙造耿襟萝椰筏孝汞玄翱侨堑惫ARM体系结构与指令集ARM体系结构与指令集 异常返回时,另一个非常重要的问题就是异常返回时,另一个非常重要的问题就是返回地址的确定

54、。返回地址的确定。 2 2异常的返回地址异常的返回地址旭才镭透泼舟狱诊豺庶宽炙侧吾招涪拽糙仆藤颊买烦触跨句纽印盂兼肖鸡ARM体系结构与指令集ARM体系结构与指令集图图图图2-8 32-8 3级级级级流水流水流水流水线线线线示例示例示例示例爹伸岳贺定薯京候其疾缎馒乏贴饵魏浩坦凭单描铺喀身舅藩同暂裸闰瓤敛ARM体系结构与指令集ARM体系结构与指令集(1 1)软中断异常)软中断异常(2 2)IRQIRQ或或FIQFIQ异常异常(3 3)Data AbortData Abort数据中止异常数据中止异常驻花义官纹瞥冰席悯迅洞吃奢掀嘶愚得泅渴缄才侨努陈盅察下雨真链诊晕ARM体系结构与指令集ARM体系结构与

55、指令集表表表表2-6 2-6 异常和返回地址异常和返回地址异常和返回地址异常和返回地址异 常地 址用 途复位复位没有定义LR数据中止LR8指向导致数据中止异常的指令FIQLR4指向发生异常时正在执行的指令IRQLR4指向发生异常时正在执行的指令预取指令中止LR4指向导致预取指令异常的那条指令SWILR执行SWI指令的下一条指令未定义指令LR指向未定义指令的下一条指令寂汽尽几枪唐铡怒栗倾线怒猫橡坦蜡寄盯绵撩跌奶姥烫吠落玩寇焉眉竿趴ARM体系结构与指令集ARM体系结构与指令集2.7 ARM2.7 ARM处理器的寻址方式处理器的寻址方式 ARM ARM指令集可以分为跳转指令、数据处理指令集可以分为跳

56、转指令、数据处理指令、程序状态寄存器传输指令、指令、程序状态寄存器传输指令、Load/StoreLoad/Store指令、协处理器指令和异常中断产生指令。根指令、协处理器指令和异常中断产生指令。根据使用的指令类型不同,指令的寻址方式分为据使用的指令类型不同,指令的寻址方式分为数据处理指令寻址方式和内存访问指令寻址方数据处理指令寻址方式和内存访问指令寻址方式。式。拂对哇满碴渗顶僧秃就尺邀勃密悍蹲吮蛰钞填雨倔闻翱提首赊杏巢密碉隧ARM体系结构与指令集ARM体系结构与指令集2.7.1 数据处理指令寻址方式数据处理指令寻址方式 数据处理指令的基本语法格式如下:数据处理指令的基本语法格式如下: S S

57、, 其中,其中,有有1111种形式,种形式,如表如表2-72-7所示。所示。沪愈刀云蕾宦灭戚矫颗已邢款坛卜退红夹祖祝女噬购釉衔牢龙堕古强匿桨ARM体系结构与指令集ARM体系结构与指令集表表表表2-7 2-7 的的的的寻寻寻寻址方式址方式址方式址方式语 法寻 址 方 式1立即数寻址2寄存器寻址3, LSL #立即数逻辑左移4, LSL 寄存器逻辑左移5, LSR #立即数逻辑右移6, LSR 寄存器逻辑右移7, ASR #立即数算术右移8, ASR 寄存器算术右移9, ROR #立即数循环右移10, ROR 寄存器循环右移11, RRX寄存器扩展循环右移颜持蜒涉碌岂定妄究史锈雷仔锭矾颠坎锐廉冗雁

58、阂队瞄讼贼薪漠迪蔷街沤ARM体系结构与指令集ARM体系结构与指令集数据处理指令寻址方式可以分为以下几种。数据处理指令寻址方式可以分为以下几种。(1 1)立即数寻址方式;)立即数寻址方式;(2 2)寄存器寻址方式;)寄存器寻址方式;(3 3)寄存器移位寻址方式)寄存器移位寻址方式 。窒醇斩罪憎杨亮溯俩杆啦岭碟汗双煎虑陋豫荔铃钵蝇凭妓瞅莫髓苯饵咒胳ARM体系结构与指令集ARM体系结构与指令集 指令中的立即数是由一个指令中的立即数是由一个8bit8bit的常数移动的常数移动4bit4bit偶数位(偶数位(0 0,2 2,4 4,2626,2828,3030)得)得到的。所以,每一条指令都包含一个到的

59、。所以,每一条指令都包含一个8bit8bit的常的常数数X X和移位值和移位值Y Y,得到的立即数,得到的立即数= =X X循环右移循环右移(2 2Y Y)。)。1 1立即数寻址方式立即数寻址方式馋蔓麦哦烃廓馏朗鼻锯构雪饰跳沤脊尔鹿惭碱这俄尤毯朝葫佛察才稽囤饲ARM体系结构与指令集ARM体系结构与指令集 寄存器的值可以被直接用于数据操作指令,寄存器的值可以被直接用于数据操作指令,这种寻址方式是各类处理器经常采用的一种方这种寻址方式是各类处理器经常采用的一种方式,也是一种执行效率较高的寻址方式,式,也是一种执行效率较高的寻址方式, 2 2寄存器寻址方式寄存器寻址方式窃扫窖浸剃荆舶自博掂凑窒漳饲合

60、津佩执亩贡瘫趾凉坏叭矮慢玻钱蝶养投ARM体系结构与指令集ARM体系结构与指令集 寄存器的值在被送到寄存器的值在被送到ALUALU之前,可以事先之前,可以事先经过桶形移位寄存器的处理。预处理和移位发经过桶形移位寄存器的处理。预处理和移位发生在同一周期内,所以有效地使用移位寄存器,生在同一周期内,所以有效地使用移位寄存器,可以增加代码的执行效率。可以增加代码的执行效率。3 3寄存器移位寻址方式寄存器移位寻址方式挛每逢差尹柱青侧程里玫涝戍饶郴疥羚喧晰岸境合爆瘤惩夷聂头锄矢夺妥ARM体系结构与指令集ARM体系结构与指令集2.7.2 内存访问指令寻址方式内存访问指令寻址方式 内存访问指令的寻址方式可以分

61、为以下几内存访问指令的寻址方式可以分为以下几种。种。 (1 1)字及无符号字节的)字及无符号字节的Load/StoreLoad/Store指令指令的寻址方式;的寻址方式; (2 2)杂类)杂类Load/StoreLoad/Store指令的寻址方式;指令的寻址方式; (3 3)批量)批量Load/StoreLoad/Store指令的寻址方式;指令的寻址方式; (4 4)协处理器)协处理器Load/StoreLoad/Store指令的寻址方指令的寻址方式。式。 杀娘要援敛没嘱脑你悔利涸白异婚策锣疡荣颤配绽捞话莲退凯多扎鸦宫堰ARM体系结构与指令集ARM体系结构与指令集 字及无符号字节的字及无符号字

62、节的Load/StoreLoad/Store指令语法格指令语法格式如下:式如下: LDR|STRBT LDR|STRBT ,1 1字及无符号字节的字及无符号字节的Load/StoreLoad/Store指指令的寻址方式令的寻址方式淀谢厕睁士层傍涤汇静摆豢陌诌伍蜕液肛伞措佛效菜庶薪紫芜裳畔昔斯掉ARM体系结构与指令集ARM体系结构与指令集表表表表2-8 2-8 字及无符合字字及无符合字字及无符合字字及无符合字节节节节的的的的Load/StoreLoad/Store指令的指令的指令的指令的寻寻寻寻址方式址方式址方式址方式格 式模 式1Rn,#立即数偏移寻址(Immediate offset)2Rn

63、,Rm寄存器偏移寻址(Register offset)3Rn,Rm,#带移位的寄存器偏移寻址(Scaled register offset)4Rn,#!立即数前索引寻址(Immediate pre-indexed)5Rn,Rm!寄存器前索引寻址(Register post-indexed)6Rn,Rm,#!带移位的寄存器前索引寻址(Scaled register pre-indexed)拖希硒斥变猫旅比轻麻卜泊堑鳞连查抽顽汲卷平誊宝壕畔互拭有磷琳锰忽ARM体系结构与指令集ARM体系结构与指令集格 式模 式7Rn,#立即数后索引寻址(Immediate post-indeded)8Rn,寄存器后

64、索引寻址(Register post-indexed)9Rn,#带移位的寄存器后索引寻址(Scaled register post-indexed)擒宴驼蛹戎装写骇狞宜系食舍伯勾厨索蒙撒焊泪圆侍炭贯垮酷趁州搐面迸ARM体系结构与指令集ARM体系结构与指令集 使用该类寻址方式的指令的语法格式如下:使用该类寻址方式的指令的语法格式如下:LDR|STRH|SH|SB|D LDR|STRH|SH|SB|D ,2 2杂类杂类Load/StoreLoad/Store指令的寻址方式指令的寻址方式搂皿田沦腾暴晃虐皱灾涯泞鞋蔓系梧捎特纂惹戈伴省餐代查盐篇盘操鞠行ARM体系结构与指令集ARM体系结构与指令集表表表

65、表2-9 2-9 杂类杂类杂类杂类Load/StoreLoad/Store指令的指令的指令的指令的寻寻寻寻址方式址方式址方式址方式格 式模 式1Rn,#立即数偏移寻址(Immediate offset)2Rn,Rm寄存器偏移寻址(Register offset)3Rn,#!立即数前索引寻址(Immediate pre-indexed)4Rn,Rm!寄存器前索引寻址(Register post-indexed)5Rn,#立即数后索引寻址(Immediate post-indeded)6Rn,寄存器后索引寻址(Register post-indexed)颐妈矽翻敌渐捐卷猖绎谍询舟惭巍变淄曰凭瘫哮煽

66、笛烷捶琶牲爵募袭肄粳ARM体系结构与指令集ARM体系结构与指令集 批量批量Load/StoreLoad/Store指令将一片连续内存单元指令将一片连续内存单元的数据加载到通用寄存器组中或将一组通用寄的数据加载到通用寄存器组中或将一组通用寄存器的数据存储到内存单元中。存器的数据存储到内存单元中。 该类指令的语法格式如下:该类指令的语法格式如下: LDM|STM LDM|STM !,!,3 3批量批量Load/StoreLoad/Store指令寻址方式指令寻址方式论搀咬烘秽驳窖笆蛹酪锣场担喂闹棘蒲已埋预阻滁援拧毫棺癸孰脓皖肌搞ARM体系结构与指令集ARM体系结构与指令集表表表表2-10 2-10

67、批量批量批量批量Load/StoreLoad/Store指令的指令的指令的指令的寻寻寻寻址方式址方式址方式址方式格 式模 式1IA(Increment After)后递增方式2IB(Increment Before)先递增方式3DA(Decrement After)后递减方式4DB(Decrement Before)先递减方式盔曙上驻磕呸谦楚描装戒渝穴酌川听桥渠勉鹃匠格虎干足皆挨哭摈子内占ARM体系结构与指令集ARM体系结构与指令集 堆栈操作寻址方式和批量堆栈操作寻址方式和批量Load/StoreLoad/Store指令指令寻址方式十分类似。但对于堆栈的操作,数据寻址方式十分类似。但对于堆栈的

68、操作,数据写入内存和从内存中读出要使用不同的寻址模写入内存和从内存中读出要使用不同的寻址模式,因为进栈操作(式,因为进栈操作(poppop)和出栈操作)和出栈操作(pushpush)要在不同的方向上调整堆栈。)要在不同的方向上调整堆栈。4 4堆栈操作寻址方式堆栈操作寻址方式手膊末藐康熏模溜以缆捅衷谤种碗烘忽镐郑贼褐惦父耽卯厅钢莆茄纷调糙ARM体系结构与指令集ARM体系结构与指令集 根据不同的寻址方式,将堆栈分为以下根据不同的寻址方式,将堆栈分为以下4 4种。种。 (1 1)FullFull栈:堆栈指针指向栈顶元素栈:堆栈指针指向栈顶元素(last used locationlast used

69、location)。)。 (2 2)EmptyEmpty栈:堆栈指针指向第一个可用栈:堆栈指针指向第一个可用元素(元素(the first unused locationthe first unused location)。)。 (3 3)递减栈:堆栈向内存地址减小的方)递减栈:堆栈向内存地址减小的方向生长。向生长。 (4 4)递增栈:堆栈向内存地址增加的方)递增栈:堆栈向内存地址增加的方向生长。向生长。水胀蜡坑吃斡长犯仙哑蹦部舆粪噶世拌电枚淫湘逸秤蹋伐锋渭拷操晴肘肩ARM体系结构与指令集ARM体系结构与指令集 根据堆栈的不同种类,将其寻址方式分为根据堆栈的不同种类,将其寻址方式分为以下以下4

70、 4种。种。 (1 1)满递减)满递减FDFD(Full DescendingFull Descending)。)。 (2 2)空递减)空递减EDED(Empty DescendingEmpty Descending)。)。 (3 3)满递增)满递增FAFA(Full AscendingFull Ascending)。)。 (4 4)空递增)空递增EAEA(Empty AscendingEmpty Ascending)。)。尤爬邮卧砌燃娜沽毡帽调棋匡唆色拽廓梧澳电惠恶狮限痉嘘腑躯鸯枝误运ARM体系结构与指令集ARM体系结构与指令集表表表表2-11 2-11 堆堆堆堆栈寻栈寻栈寻栈寻址方式和批量

71、址方式和批量址方式和批量址方式和批量Load/StoreLoad/Store指令指令指令指令寻寻寻寻址方式址方式址方式址方式对应对应对应对应关系关系关系关系批量数据寻址方式堆栈寻址方式L位P位U位LDMDALDMFA100LDMIALDMFD101LDMDBLDMEA110LDMIBLDMED111STMDASTMED000STMIASTMEA001STMDBSTMFD010STMIBSTMFA011蜘亿袖语刃幢北界哮匙郴赔句词蚜慰挠熏坑疯后俱履氯飞洗淹培瓢躬鞘坠ARM体系结构与指令集ARM体系结构与指令集 协处理器协处理器Load/StoreLoad/Store指令的语法格式如指令的语法格式

72、如下:下: L L ,5 5协处理器协处理器Load/StoreLoad/Store寻址方式寻址方式侮饰酱竞屠汲疹过衡喝圃盲鞍贫华讹莹轴厅滁残孟独玩蘸氧吨檀慧帽涩踪ARM体系结构与指令集ARM体系结构与指令集2.8 ARM2.8 ARM处理器的指令集处理器的指令集 数据操作指令是指对存放在寄存器中的数数据操作指令是指对存放在寄存器中的数据进行操作的指令。主要包括数据传送指令、据进行操作的指令。主要包括数据传送指令、算术指令、逻辑指令、比较与测试指令及乘法算术指令、逻辑指令、比较与测试指令及乘法指令。指令。2.8.1 数据操作指令数据操作指令吠拣以航燃睛病余李饥汗士炬开明靳硼坚滨夷坝惑篙祷晚晤邀

73、诀悬铆蛋锈ARM体系结构与指令集ARM体系结构与指令集表表表表2-12 2-12 数据数据数据数据处处处处理指令列表理指令列表理指令列表理指令列表助 记 符操 作行 为MOV数据传送MVN数据取反传送AND逻辑与Rd:=Rn AND op2EOR逻辑异或Rd:=Rn EOR op2SUB减Rd:=Rn op2RSB翻转减Rd:=op2 RnADD加Rd:=Rn + op2ADC带进位的加Rd:=Rn + op2 + CSBC带进位的减Rd:=Rn op2 + C 1RSC带进位的翻转减Rd:=op2 Rn + C 1TST测试Rn AND op2并更新标志位TEQ测试相等Rn EOR op2并

74、更新标志位CMP比较Rnop2并更新标志位CMN负数比较Rn+op2并更新标志位ORR逻辑或Rd:=Rn OR op2BIC位清0Rd:=Rn AND NOT(op2)智诺顺裳主版株翠乾距缎凑门姚梨癸特造戴窃陡姻舟芝诣牛协盘稽徒截炒ARM体系结构与指令集ARM体系结构与指令集 MOV MOV指令是最简单的指令是最简单的ARMARM指令,执行的结指令,执行的结果就是把一个数果就是把一个数N N送到目标寄存器送到目标寄存器RdRd,其中,其中N N可可以是寄存器,也可以是立即数。以是寄存器,也可以是立即数。 MOV MOV指令多用于设置初始值或者在寄存器指令多用于设置初始值或者在寄存器间传送数据。

75、间传送数据。 MOV MOV指令将移位码(指令将移位码(shifter_operandshifter_operand)表)表示的数据传送到目的寄存器示的数据传送到目的寄存器RdRd,并根据操作的,并根据操作的结果更新结果更新CPSRCPSR中相应的条件标志位。中相应的条件标志位。 1 1MOVMOV指令指令吮澳揖揉彭镊纱润令忿赋必菜沫坊缸缔搁茸吩厄宁熔些抉倚渴拔等记型赂ARM体系结构与指令集ARM体系结构与指令集 (1 1)指令的语法格式)指令的语法格式MOVS ,MOVS , (2 2)指令举例)指令举例 (3 3)指令的使用)指令的使用栽胰收街卞有豌布玻钠即一碾汛璃着弯宅嘎阻佣臀供府娃版疽

76、典素则铜蝶ARM体系结构与指令集ARM体系结构与指令集 MVN MVN是反相传送(是反相传送(Move NegativeMove Negative)指令。)指令。它将操作数的反码传送到目的寄存器。它将操作数的反码传送到目的寄存器。MVNMVN指令多用于向寄存器传送一个负数或生成指令多用于向寄存器传送一个负数或生成位掩码。位掩码。 MVN MVN指令将指令将shifter_operandshifter_operand表示的数据的表示的数据的反码传送到目的寄存器反码传送到目的寄存器RdRd。并根据操作的结果。并根据操作的结果更新更新CPSRCPSR中相应的条件标志位。中相应的条件标志位。2 2MV

77、NMVN指令指令趋吸钻厚赊睦耍质扇瘟冷蜂涉杀洪歪抗棱茵吃洽益锗犀麦闻汰羊庭礁釜闰ARM体系结构与指令集ARM体系结构与指令集 (1 1)指令的语法格式)指令的语法格式MVNS ,MVNS , (2 2)指令举例)指令举例 (3 3)指令的使用)指令的使用慑邹山茨驾搁湃堆汁躇眩冲佣煎雾姜膘谆痴朔况踏冬注厉锹拷槽筛星茁刃ARM体系结构与指令集ARM体系结构与指令集 AND AND指令将指令将shifter_operandshifter_operand表示的数值与表示的数值与寄存器寄存器RnRn的值按位(的值按位(bitwisebitwise)做逻辑与操作,)做逻辑与操作,并将结果保存到目标寄存器并

78、将结果保存到目标寄存器RdRd中,同时根据操中,同时根据操作的结果更新作的结果更新CPSRCPSR寄存器。寄存器。 (1 1)指令的语法格式)指令的语法格式 ANDS ANDS , (2 2)指令举例)指令举例3 3ANDAND指令指令灶帐群请嫉纹宜宵中堂傲赘烙朱鸟轿俐歇土貌积参臼盎郝烩慷抑燕癌缄和ARM体系结构与指令集ARM体系结构与指令集 EOR EOR(Exclusive ORExclusive OR)指令将寄存器)指令将寄存器RnRn中中的值和的值和shifter_operandshifter_operand的值执行按位的值执行按位“异或异或”操作,并将执行结果存储到目的寄存器操作,并

79、将执行结果存储到目的寄存器RdRd中,中,同时根据指令的执行结果更新同时根据指令的执行结果更新CPSRCPSR中相应的条中相应的条件标志位。件标志位。 (1 1)指令的语法格式)指令的语法格式 EORS EORS , (2 2)指令举例)指令举例4 4EOREOR指令指令雍醉舌冠坝并晃育尼虐戚幢蹈亥角友藤醛炉韶瘁损恶宦悉欺公远鹅团来毁ARM体系结构与指令集ARM体系结构与指令集 SUB SUB(SubtractSubtract)指令从寄存器)指令从寄存器RnRn中减去中减去shifter_operandshifter_operand表示的数值,并将结果保存表示的数值,并将结果保存到目标寄存器到

80、目标寄存器RdRd中,并根据指令的执行结果设中,并根据指令的执行结果设置置CPSRCPSR中相应的标志位。中相应的标志位。 (1 1)指令的语法格式)指令的语法格式 SUBS SUBS , (2 2)SUBSUB指令举例指令举例5 5SUBSUB指令指令收坚屿琶冰豺趾昂瞩杭压嘿四蛰拦鄂括焚炮谬某蔷播乎纤烈政纹汇跋音贞ARM体系结构与指令集ARM体系结构与指令集 RSB RSB(Reverse SubtractReverse Subtract)指令从寄存器)指令从寄存器shifter_operandshifter_operand中减去中减去RnRn表示的数值,并将表示的数值,并将结果保存到目标寄

81、存器结果保存到目标寄存器RdRd中,并根据指令的执中,并根据指令的执行结果设置行结果设置CPSRCPSR中相应的标志位。中相应的标志位。 (1 1)指令的语法格式)指令的语法格式 RSBS RSBS , (2 2)RSBRSB指令举例指令举例6 6RSBRSB指令指令委麦橙屠篮限竖跑搐饮演智诫硷三篡红捧悄新酮催釜汤睹匡褒脂甫萍呆躺ARM体系结构与指令集ARM体系结构与指令集 ADD ADD指令将寄存器指令将寄存器shifter_operandshifter_operand的值加的值加上上RnRn表示的数值,并将结果保存到目标寄存器表示的数值,并将结果保存到目标寄存器RdRd中,并根据指令的执行

82、结果设置中,并根据指令的执行结果设置CPSRCPSR中相应中相应的标志位。的标志位。 (1 1)指令的语法格式)指令的语法格式 ADDS ADDS , (2 2)ADDADD指令举例指令举例7 7ADDADD指令指令栋莉垒叉感瑰偶付颤矢然群胰艘岩癸踞磨恬匝驾妊投泅铱腐竿畜骗剥沼葬ARM体系结构与指令集ARM体系结构与指令集 ADC ADC指令将寄存器指令将寄存器shifter_operandshifter_operand的值加的值加上上RnRn表示的数值,再加上表示的数值,再加上CPSRCPSR中的中的C C条件标志条件标志位的值,将结果保存到目标寄存器位的值,将结果保存到目标寄存器RdRd中

83、,并根中,并根据指令的执行结果设置据指令的执行结果设置CPSRCPSR中相应的标志位。中相应的标志位。 (1 1)指令的语法格式)指令的语法格式 ADCS ADCS , (2 2)ADCADC指令举例指令举例8 8ADCADC指令指令浩抉席诺悲整施袍殃恃缉弱役弥养崎往沽义碘稀处膨竿扰栋遗勘纤桩他楷ARM体系结构与指令集ARM体系结构与指令集 SBC SBC(Subtract with CarrySubtract with Carry)指令用于)指令用于执行操作数大于执行操作数大于3232位时的减法操作。该指令从位时的减法操作。该指令从寄存器寄存器RnRn中减去中减去shifter_operan

84、dshifter_operand表示的数值,表示的数值,再减去寄存器再减去寄存器CPSRCPSR中中C C条件标志位的反码条件标志位的反码NOTNOT(Carry flagCarry flag),并将结果保存到目),并将结果保存到目标寄存器标寄存器RdRd中,并根据指令的执行结果设置中,并根据指令的执行结果设置CPSRCPSR中相应的标志位。中相应的标志位。9 9SBCSBC指令指令潜镐驯潍庶探滓峻馈质锨恿僻迫忘帮升昧尚缮嗓孽失返场梧佐奖惑堕攘苦ARM体系结构与指令集ARM体系结构与指令集 RSC RSC(Reverse Subtract with CarryReverse Subtract

85、with Carry)指)指令用于从寄存器令用于从寄存器shifter_operandshifter_operand中减去中减去RnRn表表示的数值,再减去寄存器示的数值,再减去寄存器CPSRCPSR中中C C条件标志位条件标志位的反码的反码NOTNOT(Carry FlagCarry Flag),并将结果保),并将结果保存到目标寄存器存到目标寄存器RdRd中,并根据指令的执行结果中,并根据指令的执行结果设置设置CPSRCPSR中相应的标志位。中相应的标志位。 (1 1)指令的语法格式)指令的语法格式 RSCS RSCS , (2 2)RSCRSC指令举例指令举例1010RSCRSC指令指令服

86、泊墅年聘磋耪考酮把趋采恢可磐饿景瀑澳兹玄氰伍舌膛哎柿还哲摘签躬ARM体系结构与指令集ARM体系结构与指令集 TST TST(TestTest)测试指令用于将一个寄存器)测试指令用于将一个寄存器的值和一个算术值进行比较。条件标志位根据的值和一个算术值进行比较。条件标志位根据两个操作数做两个操作数做“逻辑与逻辑与”后的结果设置。后的结果设置。 (1 1)指令的语法格式)指令的语法格式 TST , TST , (2 2)TSTTST指令举例指令举例1111TSTTST测试指令测试指令吵缆瓣郝粗套郊市浙桶颅耿壹逝卖忆涡酥竞树崔诈摄蛰秩扼晶鳃张勉大佣ARM体系结构与指令集ARM体系结构与指令集 TEQ

87、TEQ(Test EquivalenceTest Equivalence)指令用于将一)指令用于将一个寄存器的值和一个算术值做比较。条件标志个寄存器的值和一个算术值做比较。条件标志位根据两个操作数做位根据两个操作数做“逻辑或逻辑或”后的结果设置。后的结果设置。以便后面的指令根据相应的条件标志来判断是以便后面的指令根据相应的条件标志来判断是否执行。否执行。 (1 1)指令的语法格式)指令的语法格式 TEQ , TEQ , (2 2)TEQTEQ指令举例指令举例1212TEQTEQ指令指令烃杨醛缔膘表腐堪荆坤听踞渝赛宵蟹毋枯营斌恍以膘碗翱僵买匿森阵掳姚ARM体系结构与指令集ARM体系结构与指令集

88、CMP CMP(CompareCompare)指令使用寄存器)指令使用寄存器RnRn的值减的值减去去operand2operand2的值,根据操作的结果更新的值,根据操作的结果更新CPSRCPSR中中相应的条件标志位,以便后面的指令根据相应相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。的条件标志来判断是否执行。 (1 1)指令的语法格式)指令的语法格式 CMP , CMP , (2 2)CMPCMP指令举例指令举例1313CMPCMP指令指令办蚕捂还籽未奠失钻炙摄萧粪扮动阔呻哦透被报戴唇秋皿虞溉良氨缉陀达ARM体系结构与指令集ARM体系结构与指令集 CMN CMN(Comp

89、are NegativeCompare Negative)指令使用寄存)指令使用寄存器器RnRn的值减去的值减去operand2operand2的负数值(加上的负数值(加上operand2operand2),根据操作的结果更新),根据操作的结果更新CPSRCPSR中相应中相应的条件标志位,以便后面的指令根据相应的条的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。件标志来判断是否执行。 (1 1)指令的语法格式)指令的语法格式 CMN , CMN , (2 2)CMNCMN指令举例指令举例1414CMNCMN指令指令递屏喝藉相勒锐硝嘲夯洪缘竟钢柱叛趾咸透铅虐岩绑税壳爸侯坡土住歌像A

90、RM体系结构与指令集ARM体系结构与指令集 ORR ORR(Logical ORLogical OR)为逻辑或操作指令,)为逻辑或操作指令,它将第它将第2 2个源操作数个源操作数shifter_operandshifter_operand的值与寄的值与寄存器存器RnRn的值按位做的值按位做“逻辑或逻辑或”操作,结果保存操作,结果保存到到RdRd中。中。 (1 1)指令的语法格式)指令的语法格式 ORRS ORRS , (2 2)ORRORR指令举例指令举例1515ORRORR指令指令吊橇部讹谴酮漳肝匹吩拯巩松棠鹤殃魁揩涣厂拱爪惩谅滴涟嵌辕适奢汝脾ARM体系结构与指令集ARM体系结构与指令集 B

91、IC BIC(Bit ClearBit Clear)位清零指令,将寄存器)位清零指令,将寄存器RnRn的值与第的值与第2 2个源操作数个源操作数shifter_operandshifter_operand的值的值的反码按位做的反码按位做“逻辑与逻辑与”操作,结果保存到操作,结果保存到RdRd中。中。 (1 1)指令的语法格式)指令的语法格式 BICS BICS , (2 2)BICBIC指令举例指令举例1616BICBIC位清零指令位清零指令菌贴转付肢奸氨倍琢龟掂矾捕吗耸滤躯坍蜗荆怀竿寨锻壳煞烹裔椭诣陕叛ARM体系结构与指令集ARM体系结构与指令集 ARM ARM乘法指令完成两个数据的乘法。两

92、个乘法指令完成两个数据的乘法。两个3232位二进制数相乘的结果是位二进制数相乘的结果是6464位的积。在有些位的积。在有些ARMARM的处理器版本中,将乘积的结果保存到两的处理器版本中,将乘积的结果保存到两个独立的寄存器中。另外一些版本只将最低有个独立的寄存器中。另外一些版本只将最低有效效3232位存放到一个寄存器中。位存放到一个寄存器中。2.8.2 乘法指令乘法指令弊柒途庐宦掇绳种炎肯淮懊私倔什胆闹庄巳如狄叶坊腆缓防溉巾撇吧肿锚ARM体系结构与指令集ARM体系结构与指令集表表表表2-13 2-13 各种形式乘法指令的功能各种形式乘法指令的功能各种形式乘法指令的功能各种形式乘法指令的功能操作码

93、2321助记符意 义操 作000MUL乘(保留32位结果)Rd:=(RmRs)310001MLA乘累加(32位结果)Rd:=(RmRsRn)310100UMULL无符号数长乘RdHi:RdLo:=RmRs101UMLAL无符号长乘累加RdHi:RdLo:=RmRs110SMULL有符号数长乘RdHi:RdLo:=RmRs111SMLAL有符号数长乘累加RdHi:RdLo:=RmRs辅掸半忧周剧诫非峭桥办药汞窍辣险辫蔼递蚁筷咀沧瞄渍严专橙弗疡菲阻ARM体系结构与指令集ARM体系结构与指令集 MUL MUL(MultiplyMultiply)3232位乘法指令将位乘法指令将RmRm和和RsRs中的

94、值相乘,结果的最低中的值相乘,结果的最低3232位保存到位保存到RdRd中。中。 (1 1)指令的语法格式)指令的语法格式 MULS , MULS , (2 2)指令举例)指令举例1 1MULMUL指令指令绅钉悯眯暗铭落各除禄卸皂尝坎荣盔殊穴撰滋债箍祸福晋诉痈倘章仗募悠ARM体系结构与指令集ARM体系结构与指令集 MLA MLA(Multiply AccumulateMultiply Accumulate)3232位乘位乘累累加指令将加指令将RmRm和和RsRs中的值相乘,再将乘积加上第中的值相乘,再将乘积加上第3 3个操作数,结果的最低个操作数,结果的最低3232位保存到位保存到RdRd中。

95、中。 (1 1)指令的语法格式)指令的语法格式 MLAS , MLAS , (2 2)指令举例)指令举例2 2MLAMLA乘乘累加指令累加指令颜婚赢怔做竭渍牟厦堰凿比啄弟芬宗吼面墒党板锁应亮宴虱碌矛尿舷敖嗡ARM体系结构与指令集ARM体系结构与指令集 UMULL UMULL(Unsigned Multiply LongUnsigned Multiply Long)为)为6464位无符号乘法指令。它将位无符号乘法指令。它将RmRm和和RsRs中的值做无符中的值做无符号数相乘,结果的低号数相乘,结果的低3232位保存到位保存到RsLoRsLo中,高中,高3232位保存到位保存到RdHiRdHi中。

96、中。 (1 1)指令的语法格式)指令的语法格式 UMULLS UMULLS ,( 2 2)指令举例)指令举例3 3UMULLUMULL指令指令走喇抽坡管刹豹镍蛛仙荫伐久硅奢蜂侄殖杉龚肪宇苹城津糯睦乾穆襄澎藤ARM体系结构与指令集ARM体系结构与指令集 UMLAL UMLAL(Unsigned Multiply Accumulate Unsigned Multiply Accumulate LongLong)为)为6464位无符号长乘位无符号长乘累加指令。指令将累加指令。指令将RmRm和和RsRs中的值做无符号数相乘,中的值做无符号数相乘,6464位乘积与位乘积与RdHiRdHi、RdLoRdL

97、o相加,结果的低相加,结果的低3232位保存到位保存到RsLoRsLo中,中,高高3232位保存到位保存到RdHiRdHi中。中。 (1 1)指令的语法格式)指令的语法格式 UMALLS UMALLS , (2 2)指令举例)指令举例4 4UMLALUMLAL指令指令流鬼悼秽陪乖致猫豁狸逮港深始囊排燃枯埠海邱薯偿栋逾铃亏檬藤房数叮ARM体系结构与指令集ARM体系结构与指令集 SMULL SMULL(Signed Multiply LongSigned Multiply Long)为)为6464位位有符号长乘法指令。指令将有符号长乘法指令。指令将RmRm和和RsRs中的值做有中的值做有符号数相乘

98、,结果的低符号数相乘,结果的低3232位保存到位保存到RsLoRsLo中,高中,高3232位保存到位保存到RdHiRdHi中。中。 (1 1)指令的语法格式)指令的语法格式 SMULLS SMULLS , (2 2)指令举例)指令举例5 5SMULLSMULL指令指令厄辙诛雹婆犯脚抛氏李稠邹轩允躇举誊实囱弗噬丁头蠢操石抢章曳癣宰在ARM体系结构与指令集ARM体系结构与指令集 SMLAL SMLAL(Signed Multiply Accumulate Signed Multiply Accumulate LongLong)为)为6464位有符号长乘位有符号长乘累加指令。指令将累加指令。指令将R

99、mRm和和RsRs中的值做有符号数相乘,中的值做有符号数相乘,6464位乘积与位乘积与RdHiRdHi、RdLoRdLo相加,结果的低相加,结果的低3232位保存到位保存到RsLoRsLo中,中,高高3232位保存到位保存到RdHiRdHi中。中。 (1 1)指令的语法格式)指令的语法格式 SMLALS SMLALS , (2 2)指令举例)指令举例6 6SMLALSMLAL指令指令秧套烯葫泉岸良鞭祟妙交汽守营孝箭险透阴昨锦吁瞅遵安睹园抡圭圆钒地ARM体系结构与指令集ARM体系结构与指令集 Load/Store Load/Store内存访问指令在内存访问指令在ARMARM寄存器和寄存器和存储器

100、之间传送数据。存储器之间传送数据。ARMARM指令中有指令中有3 3种基本的种基本的数据传送指令。数据传送指令。2.8.3 Load/Store指令指令息馏齐想炎蒙窟与三驰样驰嘲艾阻贪渭揣莲降琅啪摔蹲椰谴骋务疹掀线肖ARM体系结构与指令集ARM体系结构与指令集 这些指令在这些指令在ARMARM寄存器和存储器之间提供寄存器和存储器之间提供更灵活的单数据项传送方式。数据项可以是字更灵活的单数据项传送方式。数据项可以是字节、节、1616位半字或位半字或3232位字。位字。1 1单寄存器单寄存器Load/StoreLoad/Store指令指令(Single RegisterSingle Registe

101、r)铱湿祈鞠神杆篱榨叭跪秆扯欧第靳伶俏侣晶唉惟频冀涟渝棵砾牙故瓶髓躲ARM体系结构与指令集ARM体系结构与指令集 这些指令的灵活性比单寄存器传送指令差,这些指令的灵活性比单寄存器传送指令差,但可以使大量的数据更有效地传送。它们用于但可以使大量的数据更有效地传送。它们用于进程的进入和退出、保存和恢复工作寄存器以进程的进入和退出、保存和恢复工作寄存器以及复制存储器中的一块数据。及复制存储器中的一块数据。2 2多寄存器多寄存器Load/StoreLoad/Store内存访问指内存访问指令令劳喻钾锁啦船烛崭宵拓浓捷尸带尼傀震巷酪壹蔡斩雁久木陪敝读捣翰络厘ARM体系结构与指令集ARM体系结构与指令集 这

102、些指令允许寄存器和存储器中的数值进这些指令允许寄存器和存储器中的数值进行交换,在一条指令中有效地完成行交换,在一条指令中有效地完成Load/StoreLoad/Store操作。它们在用户级编程中很少用到。它的主操作。它们在用户级编程中很少用到。它的主要用途是在多处理器系统中实现信号量要用途是在多处理器系统中实现信号量(SemaphoresSemaphores)的操作,以保证不会同时访问)的操作,以保证不会同时访问公用的数据结构。公用的数据结构。3 3单寄存器交换指令(单寄存器交换指令(Single Single Register SwapRegister Swap)鞋番博押词浓氮喧午来夺致怂瞬

103、哼屑贝楞母既霉秦癌弗两铃降乾讹鳞垒八ARM体系结构与指令集ARM体系结构与指令集2.8.3.1 单寄存器的单寄存器的Load/Store指令指令表表表表2-14 2-14 单单单单寄存器寄存器寄存器寄存器Load/StoreLoad/Store指令指令指令指令指令作 用操 作LDR把一个字装入一个寄存器Rdmem32addressSTR将存储器中的字保存到寄存器Rdmem32addressLDRB把一个字节装入一个寄存器Rdmem8addressSTRB将寄存器中的低8位字节保存到存储器Rdmem8addressLDRH把一个半字装入一个寄存器Rdmem16addressSTRH将寄存器中的低

104、16位半字保存到存储器Rdmem16addressLDRBT用户模式下将一个字节装入寄存器Rdmem8address under user modeSTRBT用户模式下将寄存器中的低8位字节保存到存储器Rdmem8address under user modeLDRT用户模式下把一个字装入一个寄存器Rdmem32addressunder user modeSTRT用户模式下将存储器中的字保存到寄存器Rdmem32address under user modeLDRSB把一个有符号字节装入一个寄存器Rdsignmem8addressLDRSH把一个有符号半字装入一个寄存器Rdsignmem16a

105、ddress雀摈霜料窿条茨劫管晰躬诸山凄嗅梆宫祖苯究淫涣尼瓣灭筷应寡坏荒盆绥ARM体系结构与指令集ARM体系结构与指令集 LDR LDR指令用于从内存中将一个指令用于从内存中将一个3232位的字读位的字读取到目标寄存器。取到目标寄存器。 (1 1)指令的语法格式)指令的语法格式 LDR , LDR , (2 2)指令举例)指令举例1 1LDRLDR指令指令罪庶空砒荷臣汹贱魂伏坏植蕴蔑褒为挂桔饱岿惶乃著锑永抽卿麻酝缠蹭曰ARM体系结构与指令集ARM体系结构与指令集 STR STR指令用于将一个指令用于将一个3232位的字数据写入到位的字数据写入到指令中指定的内存单元。指令中指定的内存单元。 (1

106、 1)指令的语法格式)指令的语法格式 STR , STR , (2 2)指令举例)指令举例2 2STRSTR指令指令漱被衡苑糠孙滔耕雾锗印挠沧陶炙易贫宵尤莱莉苛臂采躬饭隙擂卵羔琢葫ARM体系结构与指令集ARM体系结构与指令集 LDRB LDRB指令根据指令根据addr_modeaddr_mode所确定的地址模所确定的地址模式将一个式将一个8 8位字节读取到指令中的目标寄存器位字节读取到指令中的目标寄存器RdRd。 指令的语法格式:指令的语法格式: LDRB , LDRB ,3 3LDRBLDRB指令指令惊晃烁忱梨海杀盟暮简黑芯挟哪镐伐巧柱街汀别窑帜凹拌跺才绥畸收外滇ARM体系结构与指令集ARM

107、体系结构与指令集 STRB STRB指令从寄存器中取出指定的指令从寄存器中取出指定的8 8位字节位字节放入寄存器的低放入寄存器的低8 8位,并将寄存器的高位补位,并将寄存器的高位补0 0。 指令的语法格式:指令的语法格式: STRB , STRB ,4 4STRBSTRB指令指令糯莱冈代沤焉伍绞创舅仆壮蔚赡员嚎瘫描诸惩傻风聘紫榷劣洁揣傅笼枣蹦ARM体系结构与指令集ARM体系结构与指令集 LDRH LDRH指令用于从内存中将一个指令用于从内存中将一个1616位的半位的半字读取到目标寄存器。字读取到目标寄存器。 如果指令的内存地址不是半字节对齐的,如果指令的内存地址不是半字节对齐的,指令的执行结果

108、不可预知。指令的执行结果不可预知。 指令的语法格式:指令的语法格式: LDRH , LDRH ,5 5LDRHLDRH指令指令毖特蛔眉呆欣桓市宫吾湾祝比奇开砌缝踏牌工彤浪雨晰迄伍琢删裴膨辩裕ARM体系结构与指令集ARM体系结构与指令集 STRH STRH指令从寄存器中取出指定的指令从寄存器中取出指定的1616位半位半字放入寄存器的低字放入寄存器的低1616位,并将寄存器的高位补位,并将寄存器的高位补0 0。 指令的语法格式:指令的语法格式: STRH , STRH ,6 6STRHSTRH指令指令减断袍纂渝召家豆少肥诫枕杜酿夷剥改谍然砾主痈坤住呕干莆艘至桨喘孜ARM体系结构与指令集ARM体系结

109、构与指令集2.8.3.2 多寄存器的多寄存器的Load/Store内存访内存访问指令问指令表表表表2-15 2-15 多寄存器的多寄存器的多寄存器的多寄存器的Load/StoreLoad/Store内存内存内存内存访问访问访问访问指令指令指令指令指 令作 用操 作LDM装载多个寄存器Rd*Nmem32start address+4*NSTM保存多个寄存器Rd*Nmem32start address+4*N吉体硫疗溜器鸡歧辜硷更替兔暑秃孩坏苔拦朴贸栽委甲帅垛搽涣魁拽岗时ARM体系结构与指令集ARM体系结构与指令集 LDM LDM指令将数据从连续的内存单元中读取指令将数据从连续的内存单元中读取到指

110、令中指定的寄存器列表中的各寄存器中。到指令中指定的寄存器列表中的各寄存器中。当当PCPC包含在包含在LDMLDM指令的寄存器列表中时,指令指令的寄存器列表中时,指令从内存中读取的字数据将被作为目标地址值,从内存中读取的字数据将被作为目标地址值,指令执行后程序将从目标地址处开始执行,从指令执行后程序将从目标地址处开始执行,从而实现了指令的跳转。而实现了指令的跳转。 指令的语法格式:指令的语法格式: LDM LDM !, !, 1 1LDMLDM指令指令铁岿勘擅贩氯脏楷肯贾吨伶粟昂辗酗漳盘师攘绅箍肮燃执污腥警跑龟堵砾ARM体系结构与指令集ARM体系结构与指令集 LDM LDM指令将数据从连续的内存

111、单元中读取指令将数据从连续的内存单元中读取到指令中指定的寄存器列表中的各寄存器中。到指令中指定的寄存器列表中的各寄存器中。 指令的语法格式:指令的语法格式: LDM , LDM , 拄省常觉居墟印氏勇戒咐砚山查津屑曙针坎郸蜀妓促换愤痈斑纶饼娟肿葡ARM体系结构与指令集ARM体系结构与指令集 STM STM指令将指令中寄存器列表中的各寄存指令将指令中寄存器列表中的各寄存器数值写入到连续的内存单元中。主要用于块器数值写入到连续的内存单元中。主要用于块数据的写入、数据栈操作及进入子程序时保存数据的写入、数据栈操作及进入子程序时保存相关寄存器的操作。相关寄存器的操作。 指令的语法格式:指令的语法格式:

112、 STM STM !, !, 2 2STMSTM指令指令儡靡跌驴欲越吉褪揍兼鲁耙澳眨蓄芳两阅烯耽问宛摩焉造鲜贬露塞拈灼摩ARM体系结构与指令集ARM体系结构与指令集 STM STM指令将指令中寄存器列表中的各寄存指令将指令中寄存器列表中的各寄存器数值写入到连续的内存单元中。主要用于块器数值写入到连续的内存单元中。主要用于块数据的写入、数据栈操作及进入子程序时保存数据的写入、数据栈操作及进入子程序时保存相关寄存器等操作。相关寄存器等操作。 指令的语法格式:指令的语法格式: STM , STM , 宪尧仿述墙祝卤胞判担辩虹燕晤悄笨锗搀讽乖凋义怂紊赵刮晃挨楷芬秋匠ARM体系结构与指令集ARM体系结构

113、与指令集 LDM/STM LDM/STM批量加载批量加载/ /存储指令可以实现在一存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。组寄存器和一块连续的内存单元之间传输数据。LDMLDM为加载多个寄存器,为加载多个寄存器,STMSTM为存储多个寄存器。为存储多个寄存器。允许一条指令传送允许一条指令传送1616个寄存器的任何子集或所个寄存器的任何子集或所有寄存器。指令格式如下:有寄存器。指令格式如下: LDMcond LDMcond Rn!,regist Rn!,regist STMcond STMcond Rn!,regist Rn!,regist 2.8.3.3 数据传送指令应用

114、数据传送指令应用晦酬疮箱蛔颖友材岳樱涤彼剩忙赦站胚陇君茧涡镐蕊恶岔晒纸辨绍旦叔匙ARM体系结构与指令集ARM体系结构与指令集表表表表2-16 2-16 多寄存器的多寄存器的多寄存器的多寄存器的Load/StoreLoad/Store内存内存内存内存访问访问访问访问指令映射指令映射指令映射指令映射向 上 生 长向 下 生 长满空满空增加之前STMIBLDMIBSTMFALDMED之后STMIALDMIASTMEALDMFD增加之前LDMDBSTMDBLDMEASTMFD之后LDMDASTMDALDMFASTMED芍傻并镑蔼狠骄杨榆组册径蠕厘叶丹磊长幅夕香柜鼻烤辖涪秃您盖橇然搽ARM体系结构与指令

115、集ARM体系结构与指令集 交换指令是交换指令是Load/StoreLoad/Store指令的一种特例,指令的一种特例,它把一个寄存器单元的内容与寄存器内容交换。它把一个寄存器单元的内容与寄存器内容交换。交换指令是一个原子操作(交换指令是一个原子操作(Atomic Atomic OperationOperation),也就是说,在连续的总线操作),也就是说,在连续的总线操作中读中读/ /写一个存储单元,在操作期间阻止其他写一个存储单元,在操作期间阻止其他任何指令对该存储单元的读任何指令对该存储单元的读/ /写。写。交换指令如表交换指令如表2-172-17所示。所示。2.8.4 单数据交换指令单数

116、据交换指令值瑰轨声痒懊列返吉照艾划喘殃剿列伤宇粪昌屎额函你鼓毙拘橡炸全嘴绕ARM体系结构与指令集ARM体系结构与指令集表表表表2-17 2-17 交交交交换换换换指令指令指令指令SWPSWP指 令作 用操 作SWP字交换tmp=men32Rnmem32Rn=RmRd=tmpSWPB字节交换tmp=men8Rnmem8Rn=RmRd=tmp卵听让陛柄隅胀愈痊汽砾董衰营阐绊书芥烈瞅灸闷龋犹粪民惠钟咀颊蛮千ARM体系结构与指令集ARM体系结构与指令集 SWP SWP指令用于将内存中的一个字单元和一指令用于将内存中的一个字单元和一个指定寄存器的值相交换。个指定寄存器的值相交换。 指令的语法格式:指令的

117、语法格式: SWP , SWP ,1 1SWPSWP字交换指令字交换指令乍潮串末搬去妈妮渡幽炉模享筐赣壳锨略咒溅肚掩兵池策郡钡入匹拷瓦椅ARM体系结构与指令集ARM体系结构与指令集 SWPB SWPB指令用于将内存中的一个字节单元和指令用于将内存中的一个字节单元和一个指定寄存器的低一个指定寄存器的低8 8位值相交换,位值相交换, 指令的语法格式:指令的语法格式: SWPB , SWPB ,2 2SWPBSWPB字节交换指令字节交换指令怀亥键怂筹甫荐最挽显德菊羞遵剑枷怕硷胜哗柱粘霸螺残弃涌靳秀管诅处ARM体系结构与指令集ARM体系结构与指令集 SWP SWP指令用于将一个内存单元(该单元地指令用

118、于将一个内存单元(该单元地址放在寄存器址放在寄存器RnRn中)的内容读取到一个寄存器中)的内容读取到一个寄存器RdRd中,同时将另一个寄存器中,同时将另一个寄存器RmRm的内容写到该内的内容写到该内存单元中,使用存单元中,使用SWPSWP可实现信号量操作。可实现信号量操作。 指令的语法格式:指令的语法格式: SWPcondB Rd,Rm,Rn SWPcondB Rd,Rm,Rn3 3交换指令交换指令SWPSWP应用应用佩柠钳搞拟浅辣聘仿杨侣鹊澳胞限床洋屎毙滨简帘铜妮谍鳞栈劝唇盏捣择ARM体系结构与指令集ARM体系结构与指令集 跳转(跳转(B B)和跳转连接()和跳转连接(BLBL)指令是改变)

119、指令是改变指令执行顺序的标准方式。指令执行顺序的标准方式。 2.8.5 跳转指令跳转指令挞莲寡郊阿蛛从兢张股比余龄豺君荤畅馆工茸疚峨赃告构荫澳医甸市挛裕ARM体系结构与指令集ARM体系结构与指令集表表表表2-18 2-18 ARMv5ARMv5架构跳架构跳架构跳架构跳转转转转指令指令指令指令助记符说 明操 作B跳转指令pclabelBL带返回的连接跳转pclabel(lrBL后面的第一条指令)BX跳转并切换状态pcRm&0xfffffffe, TRm&1BLX带返回的跳转并切换状态pclable, T1pcRm&0xfffffffe, TRm&1lrBL后面的第一条指令偷挞汇硝限苍酣侮木涩慈豌

120、郭耐开凋片层殖烈蔓裁冀饱绑碍异跃摸下缚尼ARM体系结构与指令集ARM体系结构与指令集(1 1)指令的语法格式)指令的语法格式BL BL (2 2)程序举例)程序举例1 1跳转指令跳转指令B B及带连接的跳转指令及带连接的跳转指令BLBL匪闪熏打国蔽抖匣禾酉隆绅治幅铜突瑞丫觉唁障盼伯争秉瓦容氨央柯毡旦ARM体系结构与指令集ARM体系结构与指令集 带状态切换的跳转指令(带状态切换的跳转指令(BXBX)使程序跳转)使程序跳转到指令中指定的参数到指令中指定的参数RmRm指定的地址执行程序,指定的地址执行程序,RmRm的第的第0 0位复制到位复制到CPSRCPSR中中T T位,位,bit311bit31

121、1移入移入PCPC。若。若RmRm的的bit0bit0为为1 1,则跳转时自动将,则跳转时自动将CPSRCPSR中的标志位中的标志位T T置位,即把目标地址的代码解释置位,即把目标地址的代码解释为为ThumbThumb代码;若代码;若RmRm的位的位bit0bit0为为0 0,则跳转时,则跳转时自动将自动将CPSRCPSR中的标志位中的标志位T T复位,即把目标地址复位,即把目标地址代码解释为代码解释为ARMARM代码。代码。2 2BXBX带状态切换的跳转指令带状态切换的跳转指令BXBX硅涌刻月缺劈庐项鸥予喀塌堰谜奈祥臼航痕抛才比搐锑罢嗅幻贪厨缅琢循ARM体系结构与指令集ARM体系结构与指令集

122、(1 1)指令的语法格式)指令的语法格式BX BX (2 2)指令举例)指令举例瞧居募糕践馁丈卖夷徐刮乖恍跺骑桅肿橇牺雕捂肌巍贯学捐联瑟额骸迪低ARM体系结构与指令集ARM体系结构与指令集 带连接和状态切换的跳转指令(带连接和状态切换的跳转指令(Branch Branch with Link Exchangewith Link Exchange,BLXBLX)使用标号,用于)使用标号,用于使程序跳转到使程序跳转到ThumbThumb状态或从状态或从ThumbThumb状态返回。状态返回。 (1 1)语法格式)语法格式 BLX BLX (2 2)指令的使用)指令的使用3 3BLXBLX带状态切换

123、的连接跳转指令带状态切换的连接跳转指令BLXBLX块扦油气炭獭案央朱批拴谩桐妇淀氢砌崩吝嫌罪做殊讹斥伪畜戮蛔混焊萧ARM体系结构与指令集ARM体系结构与指令集 ARM ARM指令集提供了两条指令,可直接控制指令集提供了两条指令,可直接控制程序状态寄存器(程序状态寄存器(Program State RegisterProgram State Register,PSRPSR)。)。 2.8.6 状态操作指令状态操作指令懦篆哎芯荧石铰励运料楚伴哥耕括籍屡血剪秉测虹电汁丘络尧怯反院羊与ARM体系结构与指令集ARM体系结构与指令集表表表表2-19 2-19 程序状程序状程序状程序状态态态态寄存器指令寄存

124、器指令寄存器指令寄存器指令指令作 用操 作MRS把程序状态寄存器的值送到一个通用寄存器Rd=SPRMSR把通用寄存器的值送到程序状态寄存器或把一个立即数送到程序状态字PSRfield=Rm或PSRfield=immediate闲帖木娶劳疗秃赏烯恐芍荷辖垣骤党刑周薄群故狡浅霄撬面镁兜购洞肯鞭ARM体系结构与指令集ARM体系结构与指令集 MRS MRS指令用于将程序状态寄存器的内容传指令用于将程序状态寄存器的内容传送到通用寄存器中。送到通用寄存器中。 在在ARMARM处理器中,只有处理器中,只有MRSMRS指令可以将状态指令可以将状态寄存器寄存器CPSRCPSR或或SPSRSPSR读出到通用寄存器

125、中。读出到通用寄存器中。 (1 1)指令的语法格式)指令的语法格式 MRScond Rd MRScond Rd,PSRPSR (2 2)指令举例)指令举例1 1MRSMRS礁腔件陵陋讲贵邑摹难磺涛绘块亚隅窟怖茄琴扳号坐致雷伺忠诀奴自寝支ARM体系结构与指令集ARM体系结构与指令集 在在ARMARM处理器中,只有处理器中,只有MSRMSR指令可以直接设指令可以直接设置状态寄存器置状态寄存器CPSRCPSR或或SPSRSPSR。 (1 1)指令的语法格式)指令的语法格式 MSRcond PSR_field,#immed_8r MSRcond PSR_field,#immed_8r MSRcond

126、PSR_field,Rm MSRcond PSR_field,Rm (2 2)指令举例)指令举例2 2MSRMSR缸献醒座励秘悼慕违礁滔向划衔泞懊统镀菲碰倾证标系柔性笺惧哮贿萄缕ARM体系结构与指令集ARM体系结构与指令集【例【例2-52-5】 使能使能IRQIRQ中断。中断。【例【例2-62-6】 禁止禁止IRQIRQ中断。中断。【例【例2-72-7】 堆栈指令初始化。堆栈指令初始化。3 3程序状态寄存器指令的应用程序状态寄存器指令的应用袁淫丢疵檬省逆蜒咀羽柑玻焉裙大阀怪歹责残剖彬甭弗宠籍哨诽诧翠民痕ARM体系结构与指令集ARM体系结构与指令集 ARM ARM体系结构允许通过增加协处理器来扩

127、体系结构允许通过增加协处理器来扩展指令集。展指令集。 ARM ARM协处理器指令可分为以下协处理器指令可分为以下3 3类。类。 (1 1)协处理器数据操作。)协处理器数据操作。 (2 2)协处理器数据传送指令。)协处理器数据传送指令。 (3 3)协处理器寄存器传送指令。)协处理器寄存器传送指令。2.8.7 协处理器指令协处理器指令嘿晰声茄哪昏莱姿拐妨皮淋哭雪土扳飞仁歉喇蛾筛忌豺眼鸣琐钡董泣葱媳ARM体系结构与指令集ARM体系结构与指令集表表表表2-20 2-20 协处协处协处协处理器指令理器指令理器指令理器指令助 记 符操 作CDP协处理器数据操作LDC装载协处理器寄存器MCR从ARM寄存器传

128、数据到协处理器寄存器MRC从协处理器寄存器传送数据到ARM寄存器STC存储协处理器寄存器矩驱窃狱担冯啦贱屈公学盎磕煌怂边八渔咬航脱修坦悬雄经哼郊平堑呵秽ARM体系结构与指令集ARM体系结构与指令集 ARM ARM指令集中提供了两条产生异常的指令,指令集中提供了两条产生异常的指令,通过这两条指令可以用软件的方法实现异常。通过这两条指令可以用软件的方法实现异常。 2.8.8 异常产生指令异常产生指令裕喘寺舒膳哦茅杯汽孝扩讫刨长作尹需阑遇钠絮寄棠皮楞瞪停喉卢迁痕瓦ARM体系结构与指令集ARM体系结构与指令集表表表表2-21 2-21 ARMARM异常异常异常异常产产产产生指令生指令生指令生指令助 记

129、 符含 义操 作SWI软中断指令产生软中断,处理器进入管理模式BKPT断点中断指令处理器产生软件断点恼梨髓恨虑感尾化饱杉焉归呢需忌床掇耶诛巨挛卓戌焙咽倍咨雪捷供瘴舰ARM体系结构与指令集ARM体系结构与指令集 软件中断指令(软件中断指令(Software InterruptSoftware Interrupt,SWISWI)用于产生软中断,从而实现从用户模式)用于产生软中断,从而实现从用户模式变换到管理模式,变换到管理模式,CPSRCPSR保存到管理模式的保存到管理模式的SPSRSPSR中,执行转移到中,执行转移到SWISWI向量,在其他模式下也可向量,在其他模式下也可以使用以使用SWISWI

130、指令,处理器同样切换到管理模式。指令,处理器同样切换到管理模式。1 1软件中断指令软件中断指令紫消恢骋贴纠好骗蔷搔橱览地对氓崩腑食蔑斯硼谰件贝吞生畏颧词砚吭边ARM体系结构与指令集ARM体系结构与指令集(1 1)指令的语法格式)指令的语法格式SWI SWI (2 2)指令举例)指令举例萄肠掺翅负裁芭皮半凄终箕靠腿蚜厂柬挖亩妇谴卞签寝揽伪膀虐供随掂因ARM体系结构与指令集ARM体系结构与指令集 断点中断指令(断点中断指令(BreakPointBreakPoint,BKPTBKPT)产生)产生一个预取异常(一个预取异常(Prefetch AbortPrefetch Abort),它常被用),它常被

131、用来设置软件断点,在调试程序时十分有用。当来设置软件断点,在调试程序时十分有用。当系统中存在调试硬件时,该指令被忽略。系统中存在调试硬件时,该指令被忽略。 指令格式如下:指令格式如下: BKPT BKPT 2 2断点中断指令断点中断指令唬粳疆赋它蚜留昼旁镇旷枫谚薪裙帖蝶搽亏这桂泞韧墒宋婆莆膳演恢锦巧ARM体系结构与指令集ARM体系结构与指令集本本 章章 小小 结结 本章对本章对ARMARM处理器的体系结构、寄存器组处理器的体系结构、寄存器组织、流水线、织、流水线、ARMARM存储、异常、存储、异常、ARMARM处理器的寻处理器的寻址方式、址方式、ARMARM处理器的指令集等内容进行了介处理器的指令集等内容进行了介绍,这些内容是绍,这些内容是ARMARM处理器理论的基本内容,处理器理论的基本内容,是系统软硬件设计的基础。是系统软硬件设计的基础。绎赤摩手柯忆涯韩詹雷懈翱烧嘿高捻行魄反颁疡穿成择堤靠肩桔谚丙夕俱ARM体系结构与指令集ARM体系结构与指令集

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号