ARM架构中的堆栈与位可寻址内存区域详解
1. ARM中的堆栈
堆栈是CPU用于临时存储信息的一段RAM区域。这些信息可以是数据、地址或调用子程序时的CPU寄存器。在执行中断服务程序(ISR)时,堆栈也被广泛使用。由于寄存器数量有限,CPU需要这个存储区域。
1.1 堆栈的访问方式
在ARM CPU中,用于访问堆栈的寄存器是R13,它被指定为堆栈指针(SP)。将CPU信息(如寄存器)存储到堆栈上称为PUSH,将堆栈内容加载回CPU寄存器称为POP。
- PUSH操作 :
堆栈指针(SP)指向堆栈顶部(TOS)。当我们将数据压入堆栈时,数据被保存在SP指向的SRAM中,并且SP必须递减(或递增)以指向下一个位置。在ARM中,我们可以选择递增或递减SP。与许多其他微处理器(如x86处理器)不同,x86处理器在数据压入堆栈时会自动递减SP,而在ARM CPU中,我们必须编写指令来实现SP的递减(或递增)。
示例代码如下:
STR Rr,[R13] ;Rr可以是任何寄存器 (R0 - R12)
SUB R13,R13,#4 ;递减堆栈指针
例如,存储R1的值:
STR R1,[R13] ;将R1存储到堆栈
SUB R13,R13,#4
超级会员免费看
订阅专栏 解锁全文
355

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



