欢迎来到天天文库
浏览记录
ID:78577151
大小:183.05 KB
页数:25页
时间:2022-02-04
《ARM寻址方式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章ARM指令集3.1ARM指令集概述3.2ARM寻址方式3.3ARM指令详细介绍1ARM指令集与x86指令集的主要不同点ARM指令集x86指令集规整指令格式非规整指令格式Ø即:正交指令格式Ø即:非正交指令格式二地址指令三地址指令指令隐含决定运算完毕后是否改由指令的附加位决定运算完毕后是变状态标志否改变状态标志状态标志位有6位状态标志位只有4位单一指令密度有两种指令密度有整数除法指令无整数除法指令专用条件判断指令进行程序分支大多数ARM指令都可以条件执行没有适合DSP处理的乘加指令有适合DSP处理的乘加指令运算指令能够访问存储器Load/Store访存体系结构2
2、3.1.1ARM指令集编码ARM指令集是以32位二进制编码的方式给出的,大部分的指令编码中定义了第一操作数、第二操作数、目的操作数、条件标志影响位以及每条指令所对应的不同功能实现的二进制位。每条32位ARM指令都具有不同的二进制编码方式,和不同的指令功能相对应。312827252421201916151211870cond001opcodesRnRdShifter_operand33.1.2条件执行Suffix描述测试的标志位EQ等于(Equal)Z=1NE不等于(Notequal)Z=0CS/HS无符号的大于或等于C=1CC/LO无符号的小于C=0MI负数(Mi
3、nus)N=1PL正数或零N=0VS溢出(Overflow)V=1VC没溢出V=0HI无符号的大于C=1&Z=0LS无符号的小于或大于C=0orZ=1GE大于等于N=VLT小于(LessThan)N!=VGT大于(GreaterThan)Z=0&N=VLE小于等于Z=1orN=!V4AL总是执行(Always)ARM指令的助记符ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为:{}{S},,其中:操作码,如ADD表示算术加操作指令;{}决定指令执行的条件域;{S}决定
4、指令执行是否影响CPSR寄存器的值;目的寄存器;第一个操作数,为寄存器;第二个操作数。5ARM指令根据CPSR中的条件位自动判断是否执行指令,在条件满足时,指令执行,否则指令被忽略。在ARM的指令编码表中,统一占用编码的最高四位[31:28]来表示“条件码”(即“cond”)。条件码助记符标志含义EQZ=1相等NEZ=0不相等CS/HSC=1无符号数大于或等于CC/LOC=0无符号数小于MIN=1负数(minus)PLN=0正数或零VSV=1上溢出6VCV=0没有上溢出条件码助记符标志含义HIC=1,Z=0无符号数大于LSC=0,Z=l无
5、符号数小于或等于GEN=V有符号数大于或等于LTN!=V有符号数小于GTZ=0,N=V有符号数大于LEZ=1,N!=V有符号数小于或等于AL任何无条件执行(指令默认条件)NVARMv3之前该指令从不执行7ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。这样可以提高代码密度,减少分支跳转指令数目,提高性能。CMPr3,#0BEQskipADDr0,r1,r2skip默认情况下,数据处理指令不影响条件码标志位,但可以选择通过添加“S”来影响标志位。CMP不需要增加“S”就可改变相应的标志位。loop…SUBSr1,r1,#1R1减1,并设置标志位BNElo
6、op如果Z标志清零则跳转83.2ARM寻址方式寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本寻址方式,以下列出:-寄存器寻址-立即寻址-寄存器偏移寻址-寄存器间接寻址-基址寻址-块拷贝寻址-堆栈寻址-相对寻址9立即数寻址操作数本身直接在指令中给出,取出指令也就获得了操作数,这个操作数也称为立即数。例:ADDR0,R1,#5;R0=R1+5MOVR0,#0x55;R0=0x55其中:操作数5,0x55就是立即数,立即数在指令中要以“#”为前缀,后面跟实际数值。10寄存器寻址寄存器的值即为操作数。ARM指令普遍采用此种寻址
7、方式。例:ADDR0,R1,R2;R0=R1+R2MOVR0,R1;R0=R111寄存器偏移寻址寄存器偏移寻址是ARM指令集特有的寻址方式。当第2作数是寄存器偏移方式时,第2个寄存器操作数在与第1操作数结合之前,选择进行移位操作。寄存器偏移寻址指令举例如下:MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,即R0=R2×8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后与R1相“与”;结果放入R1,并且影响标志位。SUBR11,R12,R3,ASR#5;R12-R3÷32,然后存入R11。12寄存器偏移寻址(续)可采用的移位操作如下:LS
8、L:逻辑左
此文档下载收益归作者所有