刘帅嵌入式系统-批量Load/Store指令的寻址方式

刘帅嵌入式系统-批量Load/Store指令的寻址方式_第1张图片

一条批量Load/Store指令可以实现一组寄存器和一块连续的内存单元之间传输数据,语法格式如下:

DM | STM {}  {!}, {^}

以上指令中规则:

  1. 编号低的寄存器对应于内存中低地址单元,编号高的寄存器对应于内存中高地址单元。

  2. 中存放地址块的最低地址值。

表示地址的变化方式,有如下四种:

  • IA(Increment After):事后递增方式。

  • IB(Increment Before):实现递增方式。

  • DA(Decrement After):事后递减方式。

  • DB(Decrement Before):事先递减方式。

批量Load/Store的指令编码格式如下:

刘帅嵌入式系统-批量Load/Store指令的寻址方式_第2张图片

指令中各标志位含义如下:

U:表示地址变化的方向。

  • U = 1 时,地址从基址寄存器多汁的内存单元向上(Upwards)变化;

  • U = 0 时,地址从基址寄存器多汁的内存单元向下(Downwards)变化;

P:表示指令使用的内存块(下文坚持MEM_Cmd)中是否包含基址寄存器所指向的内存单元(下文简称MEM_Rn)。

  • P = 0 时,MEM_Rn不在MEM_Cmd中。

    • U = 0时,MEM_Rn为MEM_Cmd上面相邻的内存单元。

    • U = 1时,MEM_Rn为MEM_Cmd下面相邻的内存单元。

  • P = 1时,MEM_Rn在MEM_Cmd中。

    • U = 0时,MEM_Rn为MEM_Cmd内最上面的内存单元。

    • U = 1时,MEM_Rn为MEM_Cmd内最下面的内存单元。

S:对于不同的指令意义不同。

  • 当LDMS指令的寄存器列表中包含PC (R15)寄存器时,S = 1表示指令同时将spsr的数值复制到cpsr中。

  • 当LDMS/STMS指令的寄存器列表中不包含PC (R15)寄存器时,S = 1表示当处理器模式为特权模式时,指令操的寄存器是用户模式下的物理寄存器,而不是当前特权模式下的物理寄存器。

W:表示指令 执行后,基址寄存器的值是否更新。当W = 1时,指令执行后基址寄存器加上(U = 1)/减去(U = 0)寄存器列表中的寄存器个数乘以4。

L:表示操作的类型。

  • L = 1时,执行Store操作。

  • L = 0时,执行Load操作。

     

在寄存器列表域,每一位对应一个寄存器。如bit[0]对应R0,bit[15]代表寄存器R15(PC)。

你可能感兴趣的:(ARM,ARM体系结构,ARM)