赞
踩
寻址方式是根据指令中给出的地址码字段来寻找真实操作数地址的方式。
对Cortex-A8处理器支持的基本寻址方式有以下几种。
所需要的值在寄存器中,指令中地址码给出的是寄存器编码,即寄存器的内容为操作数。
MOV R1,R2 ;R2->R1
SUB R0,R1,R2 ;R1-R2->R0
立即寻址的指令中在操作码字段后面的地址码部分不是操作数地址,而是操作数本身。
SUBS R0,R0,#1; R0-1->R0
该寻址方式是ARM指令集中所特有的,第二个寄存器操作数在与第一个操作数结合之前,选择进行移位操作。
LSL。逻辑左移,空位补0
LSR。逻辑右移,空位补0
ASR。算术右移,保证符号不变
ROR。循环右移,移出位补空位
RRX。扩展为1的循环右移,操作数右移1位,空位用原C标志位填充
ANDS R1,R1,R2,LSL R3; (R2<<3)&R1-->R1
指令中的地址给出某一通用寄存器的编号,在被指定的寄存器中存放操作数的有效地址,而操作数则存放在该地址对应的存储单元。
LDR R1,[R2];将R2中数值作为地址,取出该地址中的数据保存在R1中。
将基址寄存器的内容与指令中给出的偏移量相加,形成操作数有效地址。
LDR R2,[R3, #0X0F];将R3的数值加到0x0F作为地址,取出此地址的数值保存在R2中
一次可以传送多个寄存器的值,允许一条指令传送16个寄存器的任何子集。
LDMIA R1!,{R2-R7,R12};将R1所读到的数据放到R2-R7,R12、R1自动更新
满堆栈:指针指向最后压入堆栈的有效数据项
空堆栈:指针指向下一个数据项放入的空位置
有以下四种情况
满递增:先移位,再压入.LDMFA , STMFA
空递增:先压入,再移位.LDMEA , STMEA
满递减:先移位,再压出.LDMFD , STMFD
空递减:先压出,再移位.LDMED , STMED
多寄存器传送指令用于把一块数据从存储器的某一位置复制到另一位置
即子程序调用指令
BEQ LOOP;条件跳转到LOOP标号处
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。