官方文档
LDMIA 具体例子
ldmia r1!, {r10-r11}
LDMIA 解析指令
-
指令名称:
LDMIA
- 全称: Load Multiple Increment After
- 功能: 从内存加载多个寄存器,基址寄存器在操作后自增。
-
基址寄存器:
r1!
- 含义: 指向数据起始位置,
!
表示加载后更新为新地址。
- 含义: 指向数据起始位置,
-
寄存器列表:
{r10-r11}
- 含义: 将数据加载到
r10
和r11
寄存器。
- 含义: 将数据加载到
LDMIA 操作详解
- 从
r1
指向的内存地址加载数据。 - 数据加载到
r10
,更新地址。 - 数据加载到
r11
,再次更新地址。 r1
更新为最后一个加载数据之后的地址。
STMIA 具体例子
STMIA r0!, {r1, r2, r3}
STMIA 指令
-
指令名称:
STMIA
- 全称: Store Multiple Increment After
- 功能: 将多个寄存器的内容存储到内存,基址寄存器在操作后自增。
-
基址寄存器:
r0!
- 含义: 指向内存起始位置,
!
表示存储后更新为新地址。
- 含义: 指向内存起始位置,
-
寄存器列表:
{r1-r3}
- 含义: 将
r1
,r2
,r3
的内容存储到内存中。
- 含义: 将
操作详解
- 将
r1
的内容存储到r0
指向的内存地址。 - 地址增加 4 字节。
- 将
r2
的内容存储到更新后的地址。 - 地址再次增加 4 字节。
- 将
r3
的内容存储到再次更新后的地址。 - 如果有
!
,更新r0
为最后一个存储地址。