微型计算机之堆栈的作用

概述

大家,在工作的途中急急忙忙的新工作进入的时候,到那之前做的工作的内容暂时转移到别的地方,开始新的工作,对吧?当匆忙的新工作结束后,我会重新开始刚才中断的原来的工作。此时,将“暂时转移原来的工作内容的地方”,在微型计算机的情况下称为“堆栈”。

现在的工作是主例程,新的工作是“异常处理(中断等)”和“函数处理(子例程等)”。如果在执行主例程时发生“异常处理”等,则会中断主例程,但会将此时的寄存器和程序计数器的值等暂时保存到内存区域(通常是RAM)中(PUSH/推入)。这个存储区被称为“堆栈”或“堆栈区域”。然后,在返回主例程时,将“堆栈”的内容返回到原始寄存器(POP/流行)。

指向“堆栈”在内存区域中的寄存器被称为“堆栈指针”。通常,“堆栈指针”指向RAM中“堆栈区域”的地址(见图1)。
图1

堆栈的基本操作

在微型计算机的主例程执行过程中,如果发生异常处理(中断、错误等)或函数执行导致的子例程,则微型计算机会中断主例程,并暂时存储返回所需的信息,例如正在操作的寄存器的值和正在运行的程序计数器(以下简称PC)。它的存储位置被称为“堆栈”。堆栈需要使用快速可访问的内存,所以通常使用内置RAM。然后将表示保管地点的寄存器称为“堆栈指针(以下称为SP)”。SP通常包含存储位置的内置RAM的地址值。

返回主例程所需的信息称为“上下文”,临时存储操作称为“PUSH(推/退)”。中断处理等结束后,微型计算机返回主例程时,恢复堆栈的内容。此操作称为“POP(流行/恢复,恢复)”。

如果堆栈是能够高速访问的存储设备,则不需要特别是RAM,因此有些微型计算机使用寄存器组作为堆栈。

堆栈指针(SP)

首先,堆栈(Stack)是堆叠的意思。因此,微型计算机所说的堆栈就是一个接一个地积累和保存上下文。
也就是说,当上下文存储在堆栈中时,它以从SP指示的地址顺序堆叠的图像存储。我说过“堆叠”,但在实际的微型计算机中,SP经常被减去,并存储在地址较少的方向上。

与通用寄存器不同,SP被分类为特殊寄存器,例如PC和状态寄存器(通常称为CCR)。初始值由用户设置。配置方法可以通过软件进行,也可以通过硬件进行。什么方式设置取决于产品规格。

硬件堆栈和软件堆栈

当发生异常处理并堆叠上下文时,通常由硬件(中断控制器)执行。这被称为“硬件堆栈”。另一方面,当通过函数执行执行子例程时,软件使用PUSH指令将上下文保存在堆栈中,并在返回时使用POP指令进行POP。像这样使用软件进行堆栈的情况称为“软件堆栈”。

猜你喜欢

转载自blog.csdn.net/qq_18191333/article/details/107596467
今日推荐