新闻中心

EEPW首页>嵌入式系统>设计应用> ARM指令寻址方式之: 内存访问指令寻址

ARM指令寻址方式之: 内存访问指令寻址

作者: 时间:2013-09-13 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257083.htm

(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。


上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 下一页

评论


相关推荐

技术专区

关闭