ARM指令寻址方式之: 内存访问指令寻址
(2)语法格式
opcode>{cond>}{L} coproc>,CRd>,[Rn>],#±offset_8>*4
其中:
· Rn>为基址寄存器,包含寻址操作的基地址;
· offset_8>为8位立即数,该值的4倍为地址偏移量。
(3)操作伪代码
If ConditionPassed(cond) then
Start_address = Rn
If U = = 1 then
Rn = Rn + offset_8 * 4
Else /*U = = 0*/
Rn = Rn – offset_8 * 4
Address = start_address
While (NotFinished(coprocessor[cp_num]))
Address = address +4
End_address = address
(4)说明
如果基址寄存器指定为程序计数器r15,则指令的执行结果不可预知。
4.[Rn>], Option>
(1)编码格式
指令的编码格式如图4.39所示。
图4.39 协处理器Load/Store指令——直接寻址
该寻址方式指定一片连续的内存地址空间。访问内存单元的第一个地址first_addressing>等于基址寄存器Rn>的值。接下来的内存访问地址是前一个访问地址加4。当协处理器发出传输中止信号时,数据传送结束。
指令不更新基址寄存器的值。指令编码格式中bits[7:0]保留,所以可以将空闲位用作协处理器指令扩展。
这种寻址方式的数据传输数目由协处理器决定,最多可以传输16字。
(2)语法格式
opcode>{cond>}{L} coproc>,CRd>,[Rn>],Option>
其中:
· Rn>为基址寄存器,包含寻址操作的基地址;
· option>用作协处理器指令扩展。
(3)操作伪代码
If ConditionPassed(cond) then
Start_address = Rn
Address = start_address
While (NotFinished(coprocessor[cp_num]))
Address = address +4
End_address = address
(4)说明
如果基址寄存器指定为程序计数器r15,则寻址基地址为当前指令地址加8。
评论