ARM 高级索引寻址模式及相关指令解析
1. 索引寻址模式概述
在 ARM 架构中,索引寻址模式是一种重要的寻址方式,它使用寄存器作为数据位置的指针。ARM 提供了三种索引寻址模式,分别是预索引、带回写的预索引和后索引。以下是这三种模式的总结:
| 索引寻址模式 | 语法 | 内存指向位置 | 执行后 Rm 值 |
| — | — | — | — |
| 预索引 | LDR Rd,[Rm,#k] | Rm+#k | Rm |
| 带回写的预索引 | LDR Rd,[Rm,#k]! | Rm+#k | Rm + #k |
| 后索引 | LDR Rd,[Rm],#k | Rm | Rm + #k |
其中,Rd 和 Rm 是任意寄存器,#k 是一个有符号的 12 位立即数,范围在 -4095 到 +4095 之间。此外,每种索引寻址模式都可以使用固定值偏移或移位寄存器偏移。
| 偏移类型 | 语法 | 指向位置 |
| — | — | — |
| 固定值 | LDR Rd,[Rm,#k] | Rm+#k |
| 移位寄存器 | LDR Rd,[Rm,Rn, ] | Rm+(Rn 移位 ) |
这里,Rn 和 Rm 是任意寄存器,#k 是有符号的 12 位立即数, 是第三章中学习的任何移位操作,如 LSL#2。
2. 固定偏移的预索引寻址模式
在这种寻址模式中,寄存器和正负立即数被用作数据位置的指针。指令执行后,寄存器的值不会改变。该寻址模式可用于 STR、STRB、STRH、LDR、LDRB 和 LDRH 指令。
超级会员免费看
订阅专栏 解锁全文
102

被折叠的 条评论
为什么被折叠?



