4.2 内存访问指令寻址
根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种。
① 字及无符号字节的Load/Store指令的寻址方式。
② 杂类Load/Store指令的寻址方式。
③ 批量Load/Store指令的寻址方式。
④ 协处理器Load/Store指令的寻址方式。
4.2.1 字及无符号字节的Load/Store指令的寻址方式
字及无符号字节的Load/Store指令语法格式如下:
LDR|STR{《cond》}{B}{T} 《Rd》,《addressing_mode》
其中《addressing_mode》共有9种寻址方式,如表4.2所示。
表4.2 字及无符合字节的Load/Store指令的寻址方式
格 式模 式
1[Rn,#±《offset_12》]立即数偏移寻址
(Immediate offset)
2[Rn,±Rm]寄存器偏移寻址
(Register offset)
3[Rn,Rm,《shift》#《 offset_12》]带移位的寄存器偏移寻址
(Scaled register offset)
4[Rn,#±《 offset_12》]!立即数前索引寻址
(Immediate pre-indexed)
5[Rn,±Rm]!寄存器前索引寻址
(Register post-indexed)
6[Rn,Rm,《shift》#《 offset_12》]!带移位的寄存器前索引寻址
(Scaled register pre-indexed)
7[Rn],#±《 offset_12》立即数后索引寻址
(Immediate post-indeded)
8[Rn],±《Rm》寄存器后索引寻址
(Register post-indexed)
9[Rn],±《Rm》,《shift》#《 offset_12》带移位的寄存器后索引寻址
(Scaled register post-indexed)
字及无符号字节的Load/Store指令的解码格式如图4.13所示。
图4.13 字及无符号字节的Load/Store指令的解码格式
编码格式中各位的含义如表4.3所示。
表4.3 字和无符号半字Load/Store指令编码格式各位含义
位 标 识取 值含 义
PP=0使用后索引寻址
P=1使用偏移地址或前索引寻址(由W位决定)
UU=0访问的地址=基址寄存器的值-偏移量(offset)
U=1访问的地址=基址寄存器的值+偏移量(offset)
BB=0字访问Load/Store
B=1无符号字节访问Load/Store
WW=0如果P=0,该指令为LDR、LDRB、STR或STRB指令,且内存访问指令为正常访问指令;如果P=1,指令执行不更新基地址
W=1如果P=0,该指令为LDRBT、LDRT、STRBT或STRT,且指令为非特权(用户模式)访问指令;如果P=1,计算内存地址并更新基地址
LL=0Store指令
L=1Load指令
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉