组成原理(五):指令系统之 堆栈操作

  堆栈是一种按特定该顺序进行存取的存储区,特定顺序归结为"后进先出(LIFO)"或"先进后出(FILO)".

  在计算中,堆栈主要用来暂存中断断点、子程序调用时的返回地址、状态标志及现场信息等。

1、堆栈结构

1.1、寄存器堆栈

  计算机中用一组专门的寄存器构成寄存器堆栈,又称为硬堆栈。寄存器堆栈结构如下:

  0

  栈顶是固定的,寄存器组中各寄存器相互连接,它们之间具有对应位自动推移的功能,可将一个寄存器的内容推移到相邻的另一个寄存器中。

1.2、存储器堆栈

  主存中划出的区域作为堆栈,这种堆栈被称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,需要一个专门的硬件寄存器作为堆栈栈顶指针,简称栈指针(SP).

  栈指针所指定的存储单元就是堆栈的栈顶。存储器堆栈可分两种:自底向上生成堆栈和自顶向下生成堆栈。

1.2.1、自底向上生成堆栈(向低地址方向生成)

  堆栈的栈底地址大于栈顶地址,进栈时,堆栈指针SP的内容需要先自动减1,然后再将数据压入堆栈;出栈时,需要先将堆栈中的数据弹出,然后SP的内容再自动加1.

 0

  进、出栈过程如下:

 0

  A为寄存器或主存单元地址;(SP)表示堆栈指针的内容,即栈顶单元地址;((SP))表示栈顶单元的内容。

1.2.2、自顶向下生成堆栈(向高地址方向生成)

  栈底地址小于栈顶地址,进栈时,先令(SP) + 1 → SP,然后再压入数据;出栈时,先将数据弹出,然后 (SP) - 1 → SP。

2、堆栈操作

  堆栈操作,通过调整堆栈指针而给出新的栈顶位置,以便对位于栈顶位置的数据进行操作。

  访问堆栈的指令只有 进栈(压入) 和 出栈(弹出 )两种。

 

posted @ 2023-09-11 10:34  无虑的小猪  阅读(970)  评论(0编辑  收藏  举报