正在加载图片...
5.2ARM指令的寻址方式 5.2.1立即寻址 ·立即寻址 ·立即寻址也叫立即数寻址 ·寄存器寻址 ·操作数本身就在指令中给出,只要取出指令也就取 ·寄存器间接寻址 到了操作数。这个操作数被称为立即数。 ·例如: ·基址变址寻址 ·多寄存器寻址 ADD RO,RO,#1 :R0-R0+1 ·相对寻址 ADD RO,RO,#0x3f RO+-R0+0x3f ·堆栈寻址 一第二个源操作数即为立即数,要求以“#”为前缀 ·对于以十六进制表示的立即数,还要求在"料”后加上0x”或最 .edu.cn 13m loousic.edu.cn 14m 有效立即数问题 5.2.2寄存器寻址 c附o9a工 ·寄存器中的数值作为操作数 并不是所有立即数都是有效的 在32位指令编码中存放32位立即数的方法是: 一这种寻址方式是各类微处理器经常采用的一种 方式,也是一种执行效率较高的寻址方式。 一在ARM漱据处理指令中,第二操作数域12位 老接品 针高餐用秀 -以下指令: 桃平棉家 ADD RO,R1,R2 RO+R1+R2 示成 <immediate>-immed8循环右移(2 x rotate imm) 如:movR4,#0x8000000A ADD R3,R2,R1,LSL #3 ;#0x8000000A由0xA8循环右移0x2位得到 :R3=R2+R1<<3 15m .edu.cn 16/77 ARM指令一第2个操作数 ARM指令——第2个操作数 Rn Rm ARM指令的基本格式如下: Rm..shift-—寺存器移住方式 预处理 预处 [桶形移位器 copcode>(<cond>)(s)Rd>,<Rn>,Koperand2>) 符奇存器的移位结果作为操作 理 教,但Rm值保持不变(移位 灵活的使用第2个絲作教“operand2”能妙提高代码效车。 接作不萌耗新外的对间)。 结果N 它有如下的形式: ALU "immed8r一常数表达式,立即寻址; 移位方法如下: Rd Rm一奇存器寻址方式: 提作积 说明 操作胡 说明 Rm.shift-一寺存器移位方式: ASR粉算术右移n位 ROR 畅环右移n位 LSLn逆辑左移n位 RRX 带打展的循环右移1位 wO"工 ] LSR #n 边辑右移n位 Type Rs 公盟 X ust.cdu.m 177 877llxx@ustc.edu.cn 13/77 5.2 ARM指令的寻址方式 • 立即寻址 • 寄存器寻址 • 寄存器间接寻址 • 基址变址寻址 • 多寄存器寻址 • 相对寻址 • 堆栈寻址 llxx@ustc.edu.cn 14/77 • 立即寻址也叫立即数寻址 • 操作数本身就在指令中给出,只要取出指令也就取 到了操作数。这个操作数被称为立即数。 • 例如: ADD R0,R0,#1 ;R0←R0+1 ADD R0,R0,#0x3f ;R0←R0+0x3f –第二个源操作数即为立即数,要求以“#”为前缀 • 对于以十六进制表示的立即数,还要求在“#”后加上“0x”或“&” 5.2.1 立即寻址 llxx@ustc.edu.cn 15/77 有效立即数问题 • 并不是所有立即数都是有效的 • 在32位指令编码中存放32位立即数的方法是: – 在ARM数据处理指令中,第二操作数域12位 – 每个立即数采用一个8位的常数(bit[7:0])循环右移偶数 位而间接得到,其中循环右移的位数由一个4位二进制 (bit[11:8])的两倍表示 • 如果立即数记作<immediate>,8位常数记作immed_8,4位的循 环右移值记作rotate_imm,有效的立即数是由一个8位的立即数 循环右移偶数位得到,可以表示成: • <immediate>=immed_8 循环右移(2×rotate_imm) 如:mov R4, #0x8000 000A ;#0x8000 000A由0xA8循环右移0x2位得到 llxx@ustc.edu.cn 16/77 5.2.2 寄存器寻址 • 寄存器中的数值作为操作数 – 这种寻址方式是各类微处理器经常采用的一种 方式,也是一种执行效率较高的寻址方式。 – 以下指令: ADD R0,R1,R2 ;R0←R1+R2 ADD R3,R2,R1,LSL #3 ;R3=R2+R1<<3 llxx@ustc.edu.cn 17/77 ARM指令的基本格式如下: ARM指令——第2个操作数 <opcode> {<cond>} {S} <Rd> ,<Rn>{,<operand2>} 灵活的使用第2个操作数“operand2”能够提高代码效率。 它有如下的形式: #immed_8r——常数表达式,立即寻址; Rm——寄存器寻址方式; Rm,shift——寄存器移位方式; llxx@ustc.edu.cn 18/77 ARM指令——第2个操作数 Rm,shift——寄存器移位方式 将寄存器的移位结果作为操作 数,但Rm值保持不变(移位 操作不消耗额外的时间)。 移位方法如下: 操作码 说明 操作码 说明 ASR #n 算术右移n位 ROR #n 循环右移n位 LSL #n 逻辑左移n位 RRX 带扩展的循环右移1位 LSR #n 逻辑右移n位 Type Rs Type为移位的一种类型,Rs为 偏移量寄存器,低8位有效。 ALU 桶形移位器 Rd 结果N 预 处 理 未 预 处 理 Rn Rm
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有