ARM指令集详解.docx
28页好东西,说得非常详细的要做底层的可以看看ARM 指令集详解ARM可以用两套指令集:ARM指令集和Thumb指令集本文介绍ARM指令集在介绍ARM指令集之前,先介绍指令的格式1 指令格式(1)基本格式
合法常量0x3FC、0、OxFOOOOOOO、200、OxFOOOOOOl 等都是合法常量非法常量OxlFE、511、OxFFFF、0x1010、0xF0000010 等都是非法常量常数表达式应用举例如下:MOV R0,#1 ;R0=1AND Rl,R2,#0x0F ;R2 与 OxOF,结果保存在 R1LDR RO, [Rl],#-4 ;读取R1地址上的存储器单元内容,且Rl=Rl—4Rm寄存器方式,在寄存器方式下操作数即为寄存器的数值寄存器方式应用举例:SUB R1, R1, R2 ; R1-R2=〉R1MOV PC, RO ; PC=RO,程序跳转到指定地址LDR RO, [R1], -R2 ;读取R1地址上的存储器单元内容并存入RO,且R1=R1-R2Rm, shift寄存器移位方式将寄存器的移位结果作为操作数,但RM值保存不变,移位方法如下:ASR #n 算术右移n位(lWnW32)LSL #n 逻辑左移n位(lWnW31)LSR #n 逻辑左移n位(lWnW32)ROR #n 循环右移n位(lWnW31)RRX 带扩展的循环右移1位type Rs 其中,type为ASR, LSL,和ROR中的一种;Rs偏移量寄存器,低8位有效, 若其值大于或等于32,则第2个操作数的结果为0 (ASR、ROR例外)。
寄存器偏移方式应用举例:ADD R1,R1,R1,LSL #3 ;R1=R1*9SUB R1,R1,R2,LSR#2 ;R1=R1-R2*4R15为处理器的程序计数器PC, 一般不要对其进行操作,而且有些指令是不允许使用R15, 如UMULL指令3)条件码使用指令条件码,可实现高效的逻辑操作,提高代码效率表A-1给出条件码表表A-1 条件码表条件码助记符标志含史EQ1= 1相等KEZ= 0不祐等C=L无符号数大于咸等于CC/LOE=0无符号敷小于MIN=LFL1T=O正数或耍VSV=L溢出YEv=o授肯溢出HZC=L , 2=0无符号数大于LS匚二0, Z=1无咼号数木于或等于创y=v带符号数大于或等干LT帑咼号数杏于GTz=oj u=y带符号数大于LEZ=L , IT! =V带符号数小于或等于AL任何无靈件执行(指逐默辽条件)对于Thumb指令集,只有B指令具有条件码执行功能,此指令条件码同表A-?,但如果为 无条件执行时,条件码助记符“ AL ”不能在指令中书写条件码应用举例如下:比较两个值大小,并进行相应加1处理,C代码为:if (a〉b) a++ ;else b++ ;对应的ARM指令如下。
其中RO为a,R1为bCMP RO,R1 ; RO 与 R1 比较ADDHI RO,RO,#1 ;若 RO〉R1,则 RO=RO+1ADDLS R1,R1,#1 ;若 RO<=R1,则 R1=R1+1若两个条件均成立,则将这两个数值相加,C代码为:If((a!=1O)&&(b!=2O)) a=a+b;对应的ARM指令如下,其中RO为a,R1为bCMP RO,#1O ;比较RO是否为1OCMPNE R1,#2O ;若RO不为1O,则比较R1是否2OADDNE RO,RO,R1 ;若 RO 不为 1O 且 R1 不为 2O,指令执行,RO=RO+R12 ARM 存储器访问指令ARM处理是加载/存储体系结构的典型的RISC处理器,对存储器的访问只能使用加载和 存储指令实现ARM的加载/存储指令是可以实现字、半字、无符/有符字节操作;批量加载/存储指令可实 现一条指令加载/存储多个寄存器的内容,大大提高效率;SWP指令是一条寄存器和存储器内容交换的指 令,可用于信号量操作等ARM处理器是冯?诺依曼存储结构,程序空间、RAM空间及IO映射空间统一编 址,除对对RAM操作以外,对外围IO、程序数据的访问均要通过加载/存储指令进行。
表A-2给出ARM存 储访问指令表表A-2 ARM存储访问指令表说明操作条件码位置LDR Ful, adilressing加我字数据Rd*- [alirezsing],寻址索即LIlJl{cCilLil}LORE Ed, ad.dressing:加载无符字节数据[adirezEing],寻址隶引LDS-icoiidlBLDRT Rd j addressing旦用户模式加载宇数据Ld*- [adiressinglj 寻址素引LDlUu 皿 d}TLilKET Rd j ad'lr essi ng应用戶模式加载无符昌字數据Rd*- [aliressing],LDE{eond}BTLDRH Rd j iddraEsiiig加載孟苻半字数齬[addiaLsing],寻址索引LDH-icoiidlHRdj addressing加载有符字节数据Hd*- [addressing] j 寻址素引LDH-[=™d}SELIHlSH R«1 j a-lilr essi ng加载有符半字敷据[adlressing],,寻址索EILDE{dond} SHSTR Rij addressing[aiiressing]■*-盟寻址索引STLicoitd}ST SI Rd i addressing存储字节数据[alireasing]阴寻址素引m-[=ond}B5TRT Rd i adireEEirLg耳用戶模式存储字数据[alir essi ng] ■*-£ 山.吁址索■;: \STE{coitd}TSRTBT Rdj addressing成用户模式存请字节数据[adiresging]「肮,寻址隶引^TLicondl BTSTKH Rd j addressing存構半宇数据[address寻址素引STL-[cond}HLIlM {mci de} Jjl{! }# re glist扭虽簡存罂)加莪T e gl 1 E 七4 L Rtl…h Rtl回•存黑LDM {cond.} {more}STM {mode? Ruf! rtglizt曲量倚存器〕存储[Rn---j'H-regliEtJ Rn 回存等STMicond} {more}SWF Ri, Ein, Bn寄存辭和存储黑字数据女揺[Edj,[血]~[帥]血#Rd或Em)OPE Rd/Rm.En 谒存器和存储器字节數I眈换pdRd]」[RnlTRnJ血* 肛昆前 ELDR 和 STR加载/存储字和无符号字节指令。
使用单一数据传送指令(STR和LDR)来装载和存储单一 字节或字的数据从/到内存LDR指令用于从内存中读取数据放入寄存器中;STR指令用于将寄存器中的数 据保存到内存指令格式如下:LDR{cond}{T} Rd,<地址 >;加载指定地址上的数据(字),放入Rd中STR{cond}{T} Rd,<地址>;存储数据(字)到指定地址的存储单元,要存储的数据在Rd中LDR{cond}B{T} Rd,<地址>;加载字节数据,放入Rd中,即Rd最低字节有效,高24位清 零STR{cond}B{T} Rd,〈地址〉;存储字节数据,要存储的数据在Rd,最低字节有效其中,T为可选后缀,若指令有T,那么即使处理器是在特权模式下,存储系统也将访问 看成是处理器是在用户模式下T在用户模式下无效,不能与前索引偏移一起使用TLDR/STR 指令寻址是非常灵活的,由两部分组成,一部分为一个基址寄存器,可以为任一 个通用寄存器,另一部分为一个地址偏移量地址偏移量有以下3 种格式:(1) 立即数立即数可以是一个无符号数值,这个数据可以加到基址寄存器,也可以从基 址寄存器中减去这个数值指令举例如下:LDR Rl,[R0,#0xl2];将R0+0xl2地址处的数据读出,保存到R1中(R0的值不变)LDR Rl,[R0,#-0xl2];将R0-0xl2地址处的数据读出,保存到R1中(R0的值不变)LDR R1,[RO];将只0地址处的数据读出,保存到R1中(零偏移)(2) 寄存器。
寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值 指令举例值指令举例如下:LDR Rl,[R0,R2];将R0+R2地址的数据计读出,保存到R1中(R0的值不变)LDR Rl,[R0,-R2];将R0-R2地址处的数据计读出,保存到R1中(R0的值不变)(3) 寄存器及移位常数寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中 减去这个数值指令举例如下:LDR Rl,[R0,R2,LSL #2];将R0+R2*4地址处的数据读出,保存到R1中(RO,R2的值不 变)LDR R1,[R0,-R2,LSL #2];将R0-R2*4地址处的数据计读出,保存到R1中(R0,R2的值不 变)从寻址方式的地址计算方法分,加载/存储指令有以下4 种形式:(1) 零偏移Rn的值作为传送数据的地址,即地址偏移量为0指令举例如下:LDR Rd,[Rn](2) 前索引偏移在数据传送之前,将偏移量加到Rn中,其结果作为传送数据的存储地址若使用后缀“!”,则结果写回到Rn中,且Rn值不允许为R15指令举例如下:LDR Rd,[Rn,#0x04]!LDR Rd,[Rn,#-0x04](3) 程序相对偏移。
程序相对偏移是索引形式的另一个版本汇编器由PC寄存器计算偏 移量,并将PC寄存器作为Rn生成前索引指令不能使用后缀“!”指令举例如下:LDR Rd,label ;label为程序标号,label必须是在当前指令的土4KB范围内(4) 后索引偏移Rn的值用做传送数据的存储地址在数据传送后,将偏移量与Rn相加, 结果写回到。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


