基于栈的CPU组织介绍和指南

2021年3月25日12:48:06 发表评论 1,036 次浏览

使用基于栈的CPU组织的计算机基于称为栈。栈是数据字的列表。它用后进先出(LIFO)访问方法, 这是大多数CPU中最流行的访问方法。寄存器用于存储栈最顶层元素的地址, 即栈指针(SP)。在该组织中, 对栈数据执行ALU操作。这意味着两个操作数始终在栈上是必需的。操作后, 结果将放入栈中。

在栈的运算符上执行的主要两个操作是PUSH和POP。仅从一端执行这两个操作。

PUSH -

该操作导致在栈顶部插入一个操作数, 并减少了栈指针寄存器。 PUSH指令的格式为:

PUSH

它将数据字插入到栈顶部的指定地址。它可以实现为:

//decrement SP by 1
SP <-- SP - 1 

//store the content of specified memory address 
//into SP; i.e, at top of stack
SP <-- (memory address)

POP–

此操作导致从栈顶部删除一个操作数, 并增加了栈指针寄存器。 POP指令的格式为:

POP

它将栈顶部的数据字删除到指定地址。它可以实现为:

//transfer the content of  SP (i.e, at top most data) 
//into specified memory location                   
(memory address) <-- SP

//increment SP by 1
SP <-- SP + 1

操作类型指令在该CPU组织中不需要地址字段。这是因为该操作是对栈顶部的两个操作数执行的。例如:

SUB

该指令仅包含没有地址字段的操作码。它从栈中弹出两个顶部数据, 减去数据, 然后将结果推入顶部的栈中。

PDP-11, 英特尔8085和HP 3000以下是一些堆栈式计算机的示例。

基于栈的CPU组织的优势–

  • 复杂算术表达式的高效计算。
  • 指令的执行速度很快, 因为操作数数据存储在连续的存储单元中。
  • 指令长度短, 因为它们没有地址字段。

基于栈的CPU组织的缺点–

  • 程序的大小增加。

注意:基于栈的CPU组织使用零地址指令。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: