您好,欢迎访问三七文档
ARM指令集(基础)分⽀支跳转指令指令格式:B{条件}labelBL{条件}labelB指令Blabel,将l标号label处的地址赋给PC,实现程序的跳转BL指令1.处理器内核⾃自动实现LR_mode=PC_Fetch2.BLlabel将标号label处地址赋给PC,实现程序的跳转执⾏行3.处理器内核⾃自动对LR进⾏行调整,即:LR=LR-4跳转范围受到限制PC+/-32MB数据处理指令指令格式:Opcond{cond}{S}Rd,Rn{,Operand}Operand⽴立即数收到合法性的限制寄存器R0~R15寄存器移位Rm,LSL#0x3Rm,LSLRx数据搬移指令MOV、MVNMOVR1,Operand//R1=OperandMVNR1,Operand//R1=~Operand算术逻辑运算指令算术运算ADD、SUB、RSB、MUL、MLAADDR1,R2,Operand//R1=R2+OperandSUBR1,R2,Operand//R1=R2-OperandRSBR1,R2,Operand//R1=R3-Operand桶型移位器移位指令LSL、LSR、ASR、ROR逻辑左移LSLR1,R2,Operand//R1=R2逻辑左移Operand位LSL:操作数最低位补零,可⽤用于⽆无符号的乘法LSLS:CPSR中C位为最⾼高位移出的值。逻辑右移LSRR1,R2,Operand//R1=R2逻辑左移Operand位LSR:操作数最⾼高位补零,可⽤用于⽆无符号的除法LSRS:CPSR中C位为操作数最低位移出的值算术右移ASRR1,R2,Operand//R1=R2算术右移Operand位ASR:左端补的值为符号位(31位)的值,课⽤用于带符号的除法ASRS:CPSR中C位为最低位移出的值循环右移RORR1,R2,Operand//R1=R2循环右移Operand位逻辑指令AND、ORR、EOR、BIC与运算ANDR1,R2,Operand//R1=R2ANDOperand或运算ORRR1,R2,Operand//R1=R2ORROperand异或运算EORR1,R2,Operand//R1=R2EOROperand按位清除BICR1,R2,Operand//R1=R2AND~Operand⽐比较指令CMP、CMN、TST、TEQ⽐比较指令CMPR1,Operand//CPSR=R1-Operand⽐比较R1与Operand的⼤大⼩小,配合EQ,NE,GT,GE,LT,LE使⽤用反值⽐比较CMNR1,Operand//CPSR=R1-(-Operand)测试是否相等TEQR1,Operand//CPSR=R1EOROperand测试两个值是否相当,配合EQ、NE使⽤用,相等EQ成⽴立,否则NE成⽴立按位测试TSTR1,Operand//CPSR=R1ANDOperand_⾮非零位⼀一般⽤用于测试某些位是否为零,如果所测试的位全部为零时,EQ成⽴立,否则NE成⽴立没有⺫⽬目标寄存器默认更新CPSR中NZCV位Load/Store指令单寄存器数据传送格式:LDR{cond}{size}Rd,addressSTR{cond}{size}Rd,addressaddress寻址⽅方式:寄存器间接寻址寄存器基址变址寻址!:回写基址,更新寄存器的值前索引:[R1,#8]//*(R1+8)自动索引:[R1,#8]!//*(R1+8);R1=R1+8后索引:[R1],#8//*(R1);R1=R1+8LDRR1,[R2,#8]//读取地址为R2+8处存储器中的内容⾄至寄存器R1中STRR1,[R2,#8]//将寄存器R1中的值保存到地址为R2+8处的存储器中块数据传送LDM|STM{cond}addressing_modeRb{!},寄存器listLDMxx/STMxxR1!,[R2,R3,R4]SWPSWP{cond}{B}Rd,Rm,[Rn]⽤用于信号量的操作不能由gcc⽣生成,只能由汇编器⽣生成即:只有汇编⾥里SWP才能实现此功能,c语⾔言⾥里没有状态寄存器传送指令MRS{cond}Rd,psr//Rd=PSRMSR{cond}PSR_[fields],Rm//PSR_[fields]=Rmfields:状态寄存器中f,s,x,c的任意组合ARM指令集中,对PSR寄存器有单独的操作指令软件中断产⽣生指令SWI{cond}SWInumber⼀一般在操作系统中才使⽤用,⽤用于系统调⽤用根据SWI软件中断号来决定采取何种操作协处理器指令MCR:从ARM寄存器传送⾄至协处理器寄存器MCR{cond}p15,{opcode_1},Rn,CRn,CRm{,opcode_2}mcrp15,0,r0,c12,c0,0协理器指令⽐比较特殊,需要查看ARM内核相关的⽂文档来确定其功能p15:协处理器opcode_1操作码1,协处理器要操作的操作码Rn:ARM寄存器CRd:P15协处理器的⺫⽬目标寄存器CRm:附加⺫⽬目标寄存器,⽤用于区别同⼀一编号不同的物理寄存器opcode_2操作码2,⽤用于区别同⼀一编号不⽤用的物理寄存器
本文标题:ARM指令集
链接地址:https://www.777doc.com/doc-5509048 .html