ARM 指令 LDMIA R1,{R2-R4} 执行过程及寄存器值分析
ARM 指令 LDMIA R1,{R2-R4} 执行过程及寄存器值分析
假设寄存器 R1=0X8000,地址 0X8004 存放的数据为 0X1A,地址 0X8008 存放的数据为 0X1B,则执行下列指令后,寄存器 R3、R4 的值为多少?
LDMIA R1,{R2-R4}
指令作用:
LDMIA R1,{R2-R4} 指令的作用是将 R1 所指向的内存地址中的数据存储到 R2、R3、R4 寄存器中,并将 R1 的值增加 12(因为一共有 3 个寄存器)。
详细过程:
- 将 R1 的值(0X8000)复制到临时寄存器 Temp 中。
- 从 Temp 所指向的内存地址(0X8000)读取数据,但不存储到寄存器中。
- 将 Temp 的值(0X8004)复制到 R2 中。
- 从 Temp 所指向的内存地址(0X8004)读取数据,并存储到 R2 中,此时 R2 的值为 0X1A。
- 将 Temp 的值(0X8008)复制到 R3 中。
- 从 Temp 所指向的内存地址(0X8008)读取数据,并存储到 R3 中,此时 R3 的值为 0X1B。
- 将 Temp 的值增加 12(0X800C)并存储到 R1 中。
- 将 Temp 的值(0X800C)复制到 R4 中,此时 R4 的值为 0X800C。
结论:
执行完 LDMIA R1,{R2-R4} 指令后,寄存器 R2 的值为 0X1A,R3 的值为 0X1B,R4 的值为 0X800C。
注意:
- LDMIA 指令是 ARM 处理器中的一个内存访问指令,用于将多个连续的内存位置的数据加载到寄存器中。
- 指令中的 {R2-R4} 表示将内存数据存储到 R2、R3、R4 寄存器中。
- R1 寄存器的值在指令执行过程中会自动增加,每次增加的幅度取决于要加载的寄存器数量,在本例中为 3 个寄存器,因此 R1 的值增加了 12。
原文地址: https://www.cveoy.top/t/topic/nlhm 著作权归作者所有。请勿转载和采集!