STMDB是针对ARM Cortex M3处理器的一条特定指令,用于将多个寄存器的值推入堆栈中。在STMDB命令中,实际上是将指定的一组寄存器的值复制一份到堆栈中,并将堆栈指针(SP)减去这些寄存器的数量乘以4,以指向堆栈中新的顶部,即下一个可用的空间。
在使用STMDB命令时指定的寄存器数量是动态的,可以从1到13个不等。例如,以下代码块中的STMDB指令将R0、R1、R2和R3寄存器的值复制到堆栈中,并将堆栈指针减去16个字节。
STMDB r13!, {r0-r3}
因此,重要的是要记住,STMDB指令实际上只是将一组寄存器的值复制到堆栈中,并将堆栈指针(SP)减去这些寄存器的数量乘以4。