使用基于栈的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组织使用零地址指令。