第章ARM的指令系统_第1页
第章ARM的指令系统_第2页
第章ARM的指令系统_第3页
第章ARM的指令系统_第4页
第章ARM的指令系统_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章ARM的指令系统

2

3.1ARM处理器的寻址方式3.2ARM处理器的指令集本章内容:ARM指令集的特点向后兼容:新版本增加指令,并保持指令向后兼容;Load-store结构*load/store–从存储器中读某个值,操作完后再将其放回存储器中只对存放在寄存器的数据进行处理;对于存储器中的数据,只能使用load/store指令进行存取条件执行:所有指令都可条件执行指令可以自己决定是否影响标志位ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。这样可以提高代码密度,减少分支跳转指令数目,提高性能。

CMPr3,#0CMPr3,#0

BEQskipADDNEr0,r1,r2

ADDr0,r1,r2

skip默认情况下,数据处理指令不影响程序状态寄存器的条件码标志位,但可以选择通过添加“S”来影响标志位。CMP不需要增加“S”就可改变相应的标志位。

loop

SUBSr1,r1,#1

BNEloop条件执行及标志位**如果Z标志清零则跳转R1减1,并设置标志位ConditionCodes

不等于(Notequal) 无符号的大于或等于无符号的小于负数(Minus)等于(Equal)溢出(Overflow)没溢出无符号的大于无符号的小于或大于正数或零小于(LessThan)大于(GreaterThan)小于等于总是执行(Always)大于等于EQNECS/HSCC/LOPLVSHILSGELTGTLEALMIVCSuffix描述Z=0C=1C=0Z=1测试的标志位N=1N=0V=1V=0C=1&Z=0C=0orZ=1N=VN!=VZ=0&N=VZ=1orN=!V下表为所有可能的条件码:注意:AL为默认状态,不需要单独指出ARM指令集与x86指令集的主要不同点ARM指令集规整指令格式即:正交指令格式三地址指令由指令的附加位决定运算完毕后是否改变状态标志状态标志位只有4位有两种指令密度无整数除法指令大多数ARM指令都可以条件执行有适合DSP处理的乘加指令Load/Store访存体系结构x86指令集非规整指令格式即:非正交指令格式二地址指令指令隐含决定运算完毕后是否改变状态标志状态标志位有6位单一指令密度有整数除法指令专用条件判断指令进行程序分支没有适合DSP处理的乘加指令运算指令能够访问存储器7

3.1.1数据处理指令寻址方式数据处理指令寻址方式分类:(1)立即数寻址方式;(2)寄存器寻址方式;(3)寄存器移位寻址方式。3.1ARM处理器的寻址方式8

3.1.1数据处理指令寻址方式1.立即数寻址方式ARM指令不能包含一个32位的立即数常数ARM指令都是32位定长的在数据处理指令的格式中,第二个操作数有12位来对应4位的移位数乘以2组成了步长为2,范围在0-30的移位值立即数法则:

“8位的常数循环右移偶数位得到”07118immed_8Shifter

RORrotx2小测试:

指令:0xe3a004ff

MOVr0,#???9

下面列举了一些有效的立即数:0xFF、0x104、0xFF0、0xFF00、0xFF000、0xFF000000、0xF000000F下面是一些无效的立即数:0x101、0x102、0xFF1、0xFF04、0xFF003、0xFFFFFFFF、0xF000001F应用立即数的指令:MOVR0,#0 ;送0到R0ADDR3,R3,#1 ;R3的值加1CMPR7,#1000 ;R7的值和1000比较103.槽1.喘1数据祸处理睛指令驱寻址横方式2.寄存俊器寻茅址方班式寄存汉器的盘值可碗以被宪直接获用于极数据瓦操作掠指令,这差种寻厘址方潮式是午各类原处理穴器经丙常采牛用的柴一种戴方式孝,也挤是一坏种执行担效率辫较高的寻稼址方烛式,眨如:MO不V史R小2,拍R0盟;R按0的值嘱送R2AD洞D姻R衣4,触R3江,R发2域;校R2加R3,结厦果送R4CM津P蹦R汇7,鞋R8障;比较R7和R8的值0xAA0x55R2R1MO惊V饭R颈1,粘R20x监AA113.卵1.颈1数据幕处理婆指令郊寻址掀方式3.寄存峡器移逆位寻冒址方文式寄存湾器的拴值在喇被送虑到AL懂U之前套,可豆以事退先经闹过桶形室移位破寄存倘器的处邻理。系预处甲理和笔移位蚂发生肝在同己一周型期内怜,所务以有拣效地晕使用酱移位净寄存泥器,萌可以没增加态代码挠的执股行效耳率。AD纺D亚R莲2,白R0暂,R魂1,拘LS否R昨#叼5MO这V井R爷1,吧R0休,L筛SL源#20x55R0R20x01MO滚V茅R乌0,稼R2砌,L级SL批#极30x慰080x礼08逻辑沉左移3位LSL移位操作:0LSR移位操作:0ASR移位操作:ROR移位操作:RRX移位操作:C133.孔1.做2内存丛访问但指令播寻址蜂方式内存话访问界指令爱的寻肉址方零式可坝以分迟为以样下几压种。3.答1时AR临M处理把器的介寻址烘方式寄存沃器间凭接寻捎址指令挡中的洗地址怎码给址出的窝是一戴个通壳用寄税存器皱编号摇,所蛮需要绳的操齐作数波保存贪在寄叶存器简指定占地址壮的存悬储单趟元中拖,即寄存坐器为揉操作咸数的膜地址外指针,操炭作数皇存放陶在存魔储器凳中。例如掩指令联:LD检R搞R使0,仁[R予1];R0头←[域R1婶](将R1中的甩数值津作为堆地址啊,取号出此苗地址宁中的称数据恒保存丸在R0中)ST众R蝴R程0,往[R徒1];[R贴1]砖←朱R00x55R0R20x400000000xAA0x40000000LD据R县R朵0,投[R偏2]0x腾AA153.贤1.板2内存牛访问离指令遮寻址曾方式变址笨寻址变址欧寻址除是将基常址寄缝存器燃的内韵容与躬指令膀中给煮出的乡丰偏移滤量相劫加,睡形成单操作丧数的委有效量地址,变销址寻词址用联于访回问基懂址附伸近的离存储闯单元普,常巨用于照查表巾,数羊组操况作,粘功能场部件壶寄存醒器访岂问等显。例如译指令由:LD堂R役R狭2,宝[R盆3,系#4沈];R2顺←[肥R3貌+妖4坏](将R3中的育数值歉加4作为嫂地址疤,取而出此典地址圣的数沙值保汉存在R2中)ST炕R继R唉1,脖[R迈0,谱#-临2];[R笋0-悦2]辰←焦R慈10x55R2R30x400000000xAA0x4000000CLD坑R恋R辞2,芬[R掀3,植#0氧x0哗C]0x愉AA将R3子+0涝x0公C作为劈燕地址游装载移数据前变代址0x萄55R2R30x猜40咱00妹00张000x跨AA0x怖40受00民00勺00LD绞R牌R讽2,辈[R嗓3]枯,#摘0x谣0C0x慕AA将R3作为康地址慰装载门数据LD牲R红r2还,[腐r3巩],阵#4;R2姐←[及R3葱],R3僚←R弟3+嗓40x森40济00甲00斯0C后变还址0x耳55R2R30x瞧40无00雪00浙000x色AA0x录40帆00友00畜0CLD绝R言R奔2,浴[R榆3,当#0生x0怨C]显!0x劫AA将R3+0x抬0C作为扩地址蒸装载劝数据LD尤R焰r2箭,[斩r3此,#兽4]牵!;R2陆←[浩R3科+4识],R3鹊←R侵3+夫40x戚40今00钢00吩0C带回劫写的王变址193.掩1.织2内存拨访问纹指令忠寻址倘方式多寄按存器幻玉寻址采用析多寄激存器继寻址万方式攻,一匙条指泊令可以摊完成册多个谢寄存掉器值座的传邻送,这察种寻谈址方加式用脚一条敌指令酬最多楚可以驾完成16个寄逃存器泳值的跟传送容。例如荐指令沿:LD呢MIAR0尾,{卸R1勉,R父2,汗R3没,R叨5};R1眯←[着R0移](IA表示甲是后笨递增广方式);R2挣←[齐R0刑+蛋4慌](IB表示位是先姐递增咽方式);R3巾←[晋R0鞠+疏8授](DA和DB表示挎后递直减和咸先递无减);R5客←[穗R0意+吼1梯2]0x40000000R1R20x??0x010x400000000x??R3R40x??R60x??0x020x030x040x400000040x400000080x4000000C存储器LD饿MI哄A国R乔1!博,{督R2趴-R提4,袍R6册}0x010x020x030x040x件40搜00顽00拍10213.胞1.拉2内存葬访问错指令删寻址山方式堆栈锋寻址堆栈打操作饱顺序中分为冻“后进融先出”和歉“先进上后出”,迹堆栈店寻址萄时隐挥含的盈,它定使用业一个宫专门挎的寄友存器增(堆扛栈指臣针)努指向麦一块废存储辱区域绳(堆置栈)葱,指弟针所塌指向巷的存校储单联元就拼是堆悔栈的胡栈顶折。存热储器泳生长地堆栈忆可分防为两枯种:向上剂生长质:向听高地浴址方兵向生项长,现称为递增社堆栈向下凉生长荷:向泳低地夫址方饭向生麻长,胖称为递减瓦堆栈栈底栈顶栈区SP堆栈存储区栈顶栈底栈区SP向下增长向上增长0x受12年34糟56孤780x暗12泉34靠56垂78堆栈压栈堆栈压栈低地仅址高地搏址233.浴1.颠2内存酷访问现指令左寻址有方式堆栈期寻址堆栈政指针畏指向种最后谈压入收的堆甩栈的猜有效念数据层项,称为畏满堆疲栈(Fu虫ll渣S凳ta缺ck);堆栈筛指针狼指向块下一答个要其放入蔬的空怎位置,称泛为空偿堆栈(Em发pt乡丰y环St朋ac姑k)。栈顶SP栈顶SP栈底空堆栈栈底满堆栈0x呆12肝34听56涂780x12345678栈顶SP0x12345678栈顶SP压栈压栈24这样早就有伏四种毒类型博的堆股栈工郑作方速式,等即:满递泛增堆贷栈:堆栈委指针迫指向斧最后片压入摘的数雷据,煌且由胡低地政址向螺高地拆址生财成。婶如指销令LD杆MF糖A,ST椒MF旷A等。满递惩减堆替栈:堆栈滩指针混指向欺最后族压入封的数俩据,宰且由薪高地霜址向票低地样址生制成。帆如指胳令LD圾MF尾D,ST踢MF挎D等。空递肝增堆屋栈:堆栈电指针秩指向许下一锤个将法要放亚入数缝据的白空位离置,董且由篮低地觉址向割高地天址生务成。掠如指舒令LD朋ME改A,ST短ME裹A等。空递椒减堆低栈:堆栈趣指针捎指向殊下一拒个将国要放双入数般据的团空位涝置,还且由塑高地例址向胃低地岸址生袍成。瞎如指钻令LD储ME羡D,ST贱ME娘D等。例:ST页MF委D裕SP今!,属{R夹0~捞R7索,L酸R}现场顿保护LD洲MF究D惕S拿P!把,萝{R鱼0~病R7隔,P犬C}恢复案现场253.烈2.书1数据灿操作建指令数据蹈操作馆指令会是指系对存锐放在剖寄存训器中港的数另据进湾行操泼作的点指令亲。包藏括:数据雷传送剂指令、算术损指令、逻辑旧指令、比较谎与测苍试指再令及接乘法阴指令。如果糖在数怎据处横理指穷令后匹使用S前缀谋,指猴令的泪执行放结果净将会廊影响CP画SR中的软标志产位。3.娃2酱AR补M处理券器的卧指令仔集AR调M数据息处理混指令——数据床传送注:率当后除缀S时,献这些垦指令贩根据灾结果渐更新岔标志N和Z,在级计算Op泊er框an著d2时更兽新标头志C,不要影响医标志V。AR科M数据肤处理调指令——算术凡运算28AR邀M数据董处理足指令——逻辑居运算挡指令AR沙M数据辣处理敏指令——比较架指令303.会2.替2阴乘法校指令313.启2.虑3负Lo赤ad碌/S猴to遇re指令Lo秒ad烂/S失to尸re内存龙访问谨指令复在AR臂M寄存住器和塔存储酷器之舰间传杨送数变据。AR郑M指令寻中有3种基严本的丛数据夹传送璃指令眨。1.单疲寄存款器Lo栗ad佳/S杰to皂re指令管(Si舒ng睡le唯R观eg寸is角te野r)2.多功寄存侧器Lo承ad怪/S友to挥re内存枪访问捎指令3.单锯寄存客器交宽换指示令(Si立ng奏le舞R手eg曲is挖te拐r扶Sw刑ap)3.娇2请AR纱M处理球器的然指令蔑集323.恋2.粪3否Lo浩ad典/S晶to酱re指令3.礼2.劈燕3.索1单寄扇存器锈的Lo胆ad枕/S昼to屿re指令用于鲜把单一掠的数较据传琴入或挽者传饲出一切个寄超存器。支让持的滔数据孟类型梢有字咸节(8位)抱、半妻字(16位)条和字踩(32位)究。单寄诊存器Lo利ad仿/S售to狐re指令3.怒2急AR陆M处理薯器的状指令悄集33LD失R和ST斥R指令渔应用辉示例叶:1.加载/存储绒字和脾无符耍号字甲节指目令LD分R理R唤2,胶[R雁5];将R5指向压地址岸的字扇数据死存入R2ST法R续R舱1,败[R证0,旱#0械x0休4];将R1的数狠据存示储到R0火+0盒x0秋4地址LD端RB撑R煤3,秋[R亮2]傻,#钢-1;将R2指向擦地址讨的字猴节数露据存猫入R3,R2=R2-12.加载/存储档半字顽和有获符号着字节瞧指令LD包RS蜡B塘R窄1,该[R麦0,检R3棍];将R0约+R敞3地址牢上的故字节电数据葡存入R1,;高24位用爆符号骂扩展LD睬RH炼R围6,类[R裳2]竿,#浩2;将R2指向右地址刑的半聋字数松据存胖入R6,高16位用0扩展;读出办后,R2慌=R宰2+存2ST愁RH敏R生1,倒[R誓0,己#2含]!;将R1的半姥字数惕据保怜存到R0拖+2地址秃,;只修架改低2字节帽数据他,然州后R0敞=R虽0+砌234为了渡加载缘瑞更大之的立切即数,汇编斯器提鸡供了弦伪指盒令:LD策R酬rd否,腥=c驼on屡st这将:产生怠一条MO盯V或者MV扣N指令产生育一条PC相对载寻址锦的LD苗R指令夸将立抵即数弄从li管te宾ra崖l汽po粗ol里读枯出来举例LD功R齐r0青,慕=0灵xF我F=>MO或V额r0雅,哭#0宫xF趋FLD劈燕R算r0探,牲=0远x5品55孕55尘55湿5=>LD蜜R以r0踏,侍[P阀C,雾#乖Im爪m1宁2]加…林…忧DC鼻D本0x比55印55奋55纲55推荐阀用这行种方死式将俗常数妥加载塞到寄厚存器LD督R伪指玻令——加载32位的味常数353.旺2.逢3步Lo略ad隶/S称to津re指令3.斗2.患3.橡2丑多给寄存伤器的郑Lo仍ad蹈/S牵to饲re公内存唤访问今指令多寄眼存器屈的Lo弦ad刻/S货to帅re内存键访问姿指令撑也叫批量查加载/存储且指令,它捷可以踪蝶实现锁在一株组寄举存器刃和一阳块连辫续的乎内存曾单元淘之间沫传送列数据缴。LD酿M用于词加载战多个慰寄存弄器,ST柄M用于旋存储坡多个译寄存乞器。繁多寄锁存器译的Lo牺ad独/S专to谁re内存番访问彼指令警:3.冶2旱AR摄M处理翠器的夹指令歉集注意根不同填类型铁的基卫址寄蛛存器脂变化吐情况R5R6R7R1R1’指令STMIAR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1R1’指令STMDAR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1R1’指令STMIBR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1’R1指令STMDBR1!,{R5-R7}4008H4004H4000H4014H4010H400CH373.蛙2.狼3非Lo豆ad壁/S住to扮re指令3.姿2.丑3.江2耽多柄寄存盈器的投Lo甚ad屠/S跨to液re组内存管访问锤指令【举例】使用LD犹M/级ST秀M进行肢数据众复制授。LD匪R召R厚0,遇=S刃rc冲Da贼ta败;设置醋源数穴据地插址LD桌R乓R条1,窃=D葡st赔Da缘瑞ta补;设置菌目标悼地址LD扰MI天A直R0战,{掩R2~R9狐}塞;加载8字数统据到怨寄存防器R2~R9ST张MI陆A苹R1粉,{竖R2~R9闻}颜;存储娃寄存挎器R2~R9到目踢标地讯址【举例】使用LD饰M/踩ST谊M进行婆现场杂寄存胸器保搁护,驻常在烫子程华序或涉异常烛处理哲使用西。SE柜ND奖BY糖TEST卷MF方D关SP答!,弟{R鸦0~R7踩,L洽R}桑;寄存痒器压描栈保广护…BL辽DE肝LA愿Y握;调用DE蝇LA平Y子程领序…LD组MF坝D后SP漠!,培{R话0~R7沉,P决C}脏;恢复偿寄存芒器,物并返奏回383.熊2.毁3某Lo涌ad牲/S谁to横re指令3.惊2.详3.朋3单数有据交哲换指炒令交换岩指令毯是Lo字ad李/S号to破re指令伏的一昨种特般例,讨它把愉一个沙寄存宁器单届元的普内容扮与寄昏存器新内容艳交换巩。交瞎换指接令SW汇P:3.布2靠AR季M处理焦器的朽指令很集393.枝2.杀4跳转征指令跳转盗(B)和追跳转握连接氧(BL)指奋令是改懒变指待令执带行顺酬序的巾标准绪方式迟。AR闻Mv寒5架构蠢指令旬集包炼含的尽跳转顽指令迫如表爹所示婚。3.怜2怠AR钓M处理赖器的粒指令总集403.畏2.构4跳转蚀指令1.跳佩转指那令B及带狭连接虎的跳弦转指茎令BL跳转体指令B使程红序跳晕转到蒙指定阔的地蛮址执责行程昂序。BL将下驶一条异指令爽的地刘址拷踢贝到R1幅4(即返回乱地址胞连接斤寄存邻器LR)寄朽存器栋中,轰然后请跳转宋到指街定地编址运仓行程日序。413.译2.粒4跳转企指令程序凳举例①程您序跳米转到LA楼BL励E标号赞处。B佳L扶AB绪LE;AD历D迅R配1,孤R2灿,#4AD商D痛R淡3,获R2县,#8SU嚼B莫R叫3,侵R3帮,R师1LA公BL格ESU哈B仙R蜻1,裳R2罩,#著8②跳转槽到绝灭对地以址0x喉12籍34处。B浇0印x1艘23小4③跳转真到子税程序fu拒nc处执梢行,技同时退将当填前PC值保急存到LR中。BL环fu女nc④条件元跳转犬:当CP胆SR寄存她器中达的C条件看标志节位为1时,帮程序吹跳转叼到标焦号LA盘BL笑E处执斯行。BC非C录L束AB谅LE423.越2.邮4跳转诊指令2.BX带状穷态切今换的减跳转右指令BXBX使程追序跳剑转到滥指令苹中指颂定的发参数Rm指定呼的地煌址执敢行程兔序(1)指虚令的筒语法挂格式BX局{<因co妻nd放>}坟<R职m>Rm的第0位拷矩贝到CP柴SR中T位,bi楚t[更31香∶1小]移入PC。若Rm的bi验t[援0]为1,则嫩跳转堵时自血动将CP职SR中的孝标志篮位T置位伙,即析把目搜标地抹址的弯代码进解释罚为Th僻um苍b代码智;若Rm的位bi升t[浇0]为0,则菌跳转茶时自尿动将CP然SR中的撕标志瓜位T复位孙,即找把目妖标地串址代望码解秒释为AR挑M代码抖。433.描2.搜4跳转屿指令2.BX带状脉态切卧换的顶跳转模指令BX(2)指眉令举忠例①贪转移球到R0中的它地址饼。BX乱R尚0;如吊果R0良[0集]=砍1,则山进入Th销um秃b状态②兴跳转胜到Th歪um助b程序吐的Th走um事bF阀un地址AD阴RL叉R亦0,赵Th顾um攻bF屈un班+1;BX蒙R异0;443.岭2.永5状态词操作被指令AR疗M指令艳集提原供了匀两条多指令鼠,可糖直接挨控制引程序锻状态搏寄存孩器。MR些S指令用于延把CP吸SR或SP余SR的值分传送川到一指个寄邪存器魂;MS得R与之泊相反,把纷一个纳寄存邻器的常内容绵传送注到CP掀SR或SP侧SR。这困两条进指令供相结域合,典可用闭于对CP唉SR和SP娱SR进行环读/写操志作。程序足状态校寄存州器指槐令3.圈2累AR晌M处理搭器的据指令贯集453.此2.摘5状态艰操作窝指令1.MR额S:MR昨S指令浅用于蓬将程铲序状圈态寄泳存器递的内炎容传波送到苗通用葬寄存雪器中框。(1)指予令的沿语法捡格式搁:MR积S{轧co赏nd率}莲R膝d,PS村RRd为目馋标寄固存器务,Rd不允淋许为降程序遍计数茧器(PC)。PS牌R为CP动SR或SP扫SR。(2)指迈令举炉例MR挽S娃R蛇1,树CP卸SR现;将CP虑SR状态亮寄存先器读淘取,纯保存勒到R1中MR搅S案R仇2,册SP掌SR帜;将SP赴SR状态旧寄存注器读骂取,铁保存喇到R1中3.乖2狮AR艳M处理青器的洪指令腊集463.替2.宪

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论