堆栈寻址方式

版权声明: Free Open Share https://blog.csdn.net/IT_DREAM_ER/article/details/71439218

最近由于抄作业被《组成原理》老师发现,作为惩罚,老师让我上课给大家分享一下关于堆栈寻址方式的相关知识,分享固然是很好的事,但是原因是由于抄作业,还是希望大家引以为戒,作业以后自己独立完成。
下面,进入正题:
关于堆栈结构,计算机中常用的有两种,一种是串联堆栈结构,另一种是存储器堆栈结构,下面详细介绍一下这两种堆栈结构。

串联堆栈结构

串联,字面意思来讲,就是将一系的东西连起来,形成一个串式结构,而在这里,指的就是将一系列的寄存器串联起来,模拟成为一个堆栈结构,用于临时保存某些数据。
下图演示进栈与出栈操作:
这里写图片描述
串联堆栈的缺点:

  • 寄存器数目有限,当压入的数据多于寄存器数时,老的数据就会从栈低压出从而丢失。
  • 数据的读出过程是破坏性的,当一个数据因需要读取而出栈后,其也就不再存在于堆栈中。

存储器堆栈结构

为了解决串联堆栈的缺点,于是引入了存储器堆栈,使用一部分主存来作为堆栈。
这里写图片描述

存储器堆栈的工作过程:

  • 进栈操作:
       (A)→Msp ,(SP)-1→SP
      其中(A)表示通用寄存器A的内容,SP表示堆栈指示器,Msp 表示堆栈指示的存储器栈顶单元。
  • 出栈操作:
       (SP)+1→SP,(Msp)→A

总结为:进栈时先存入数据,后修改堆栈指示器;出栈时,先修改堆栈指示器,然后取出数据。

存储器堆栈的优点:

  • 堆栈能够具有程序员要求的任意长度;
  • 可按程序员要求,在主存中建立多个堆栈;
  • 可用访存指令来对堆栈中的数据进行寻址操作。

串联堆栈和存储器堆栈区别

  • 使用的存储元不同,串联堆栈使用的是寄存器,而存储器堆栈使用的是主存
  • 所处位置不同,串联堆栈位于CPU内部,而存储器堆栈位于主存中
  • 大小不同,串联堆栈一般存储空间比较小,且大小固定,而储存器堆栈存储空间较大,且空间可以根据需求变化。
  • 栈的存储方式不同,串联堆栈的栈顶不变,栈底随栈中元素数量而变化,存储器堆栈栈底固定,栈顶根据栈中元素数量而变化。

猜你喜欢

转载自blog.csdn.net/IT_DREAM_ER/article/details/71439218