欢迎来到天天文库
浏览记录
ID:57686467
大小:1.04 MB
页数:9页
时间:2020-09-01
《ARM的8种寻址方式详细总结.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、二、ARM7的8种寻址方式1.3级流水线是ARM7TDMI的主要特征之一,而ARM7之后的处理器,比如ARM9的5级流水线等等,流水线越多,就越快。他在执行程序时,要分3个步骤。第一步是要把指令从程序存储器中取出来,取指是在处理器内核和程序存储器之间进行的,取指时间的长短和程序存储器的位置远近,和速度(用的静态还是动态,Cachae,Flash等)这些有关。第二部就是把读到的内核的指令进行译码,也就是把二进制指令转变为电路的动作,打开哪些门电路,关闭哪些门电路。第三步就是把门电路的动作送到制定的目标地址。2.寻址方式寻址
2、就是找与数据相关联的地址,ARM寻址复杂,操作数为2个或以上。寄存器寻址:此种寻址就是寄存器内容就是操作数,寄存器本身就是操作数地址,在ARM任何一个模式中都有R0—R14以及PC和CSSR可以寻址。如下举例:注意在ARM指令中第二条,应为ARM的寄存器大部分都可以作为ADD,ADDR4,R4,R5中第一个R4就相当于存了51系列本来用ADD存结果。立即寻址:操作数不是存储在寄存器或存储器中,而是包含在指令的操作码,取出指令就取出了操作码。如图:注意:十进制立即数表达举例:#0005、#0376、#01234十六进制立即
3、数表达举例:#0x0005、#0x0FFF、#0x072寄存器移位寻址:寄存器移位寻址是ARM指令独有的寻址方式,51系列单片机没有,在这种方式中,对一个寄存器的内容进行移位(左右移位),移位的位数必须写在表达式中。如图:ARM指令集有5种移位操作:(1)LSL逻辑左移向左移位,左侧移出的位丢失,右端空出位补0。注意最后一个左移出的位放在状态寄存器的C位CPSR【29】中。这种相当于寄存器的乘法。移出n位相当于乘以2的n次幂。(2)LSR逻辑右移向右移位,右侧移出的位丢失,左端空出位补0。注意最后一个右移出的位放在状态寄
4、存器的C位CPSR【29】中。这种相当于寄存器的除法。移出n位相当于除以2的n次幂。(3)ROR循环右移向右移位,右侧移出的位填充在左侧的空位处,左端空出位补0。注意最后一个右移出的位放在状态寄存器的C位CPSR【29】中。如R4,ROR#03表明把R4内的数据向右移3位。。。(4)ASR算术右移向右移位,移除的位丢失,最左端的位保持不变。注意最后一个右移出的位放在状态寄存器的C位CPSR【29】中。如图:(5)RRX扩展的循环右移向右移位,只移一位,左侧空位由状态寄存器C位填充,右侧移出的位移进状态位C。如图:寄存器间
5、接寻址:在ARM指令表达式中,规定使用[]表达间接寻址的寄存器。[]就像取址符。变址寻址:STMIAR10,{R0,R2—R4}在这个列子中,每传送一个数据,基址R10就自动增4指向下一个地址,但指令完成后R10仍旧等于指令执行前的值。{}是此种寻址的标志也就是说不同的处理器堆栈的栈区方式是不一样的,比如2410、2440处理器或其他。寻址方式的的应用:在数据传送指令中,寄存器内存储的数据是操作数地址,可以使用寄存器间接寻址和语句标号表达地址。在数据处理类指令中,寄存器内的数据就是操作数,一般使用寄存器寻址。ARM指令集
6、和Thumb指令集寻址方式有些差异。ARM指令寻址指令表:(参考书籍:从51到ARM32位嵌入式系统入门)
此文档下载收益归作者所有