计算机体系结构中的内存栈是什么?
栈可以通过分析计算机内存中的一个区域来执行栈操作,并利用处理器寄存器作为栈指针在CPU中执行。这种方法是在连接到CPU的随机存取存储器中执行的。
计算机内存的一个区域被分成三个段,例如程序、数据和栈。程序中下一条指令的地址保存在程序计数器(PC)中。地址寄存器(AR)指向信息的数组。SP持续影响堆栈顶部元素的地址。
三个与公共总线连接的寄存器是PC、AR和SP。PC可以在取指令阶段读取指令。在执行阶段使用地址寄存器读取操作数。使用栈指针将元素压入或弹出栈。
在图中,SP指向起始值“2001”。因此,栈随着地址的减小而增长。第一个元素保存在地址2000,下一个元素保存在地址1999,最后一个元素保存在地址1000。
数据寄存器可以将元素读入或读出栈。它可以使用push操作将新元素插入栈。
SP ← SP – 1
K ← SP [DR]
它可以将另一个元素插入栈中,栈指针减1。它可以指向下一个位置/字的地址。使用内存写操作将DR中的字插入栈顶。
它可以从栈中删除元素。它可以使用pop操作,如下所示:
DR ← K [SP]
SP ← SP + 1
将顶部元素读入DR,然后将栈指针减1以指向栈中的下一个元素。
两个处理器寄存器可以检查堆栈限制。一个处理器寄存器影响上限(1000),另一个影响下限(2001)。在push操作期间,将SP与上限进行比较以检查堆栈是否已满。在pop操作期间,将SP与下限进行比较以检查堆栈是否为空。
广告