Stack Machine
- 컴퓨터의 한 종류이며, 스택 기계를 시뮬레이션하는 S/W Scheme을 의미하기도 한다.
- 대부분의 명령어가 프로세서 레지스터가 아닌, 푸시다운 스택에서 연산된다.
Stack Machine의 Processor 구성
- ALU : Arithmetic Logic Unit
- Stack : FILO (First In Last Out) 구조, Shift Register가 이용된다.
- PC : Program Counter, 다음에 실행될 명령어를 저장한다.
- IR : Instruction Register, Load된 명령어를 처리과정 동안 저장한다.
- CU : Control Unit
- MAR : Memory Address Register, Memory에 접근 시 사용된다.
- MDR : Memory Data Register, MBR (Memory Buffer Register)라 부르기도 하며 MAR과 마찬가지로 Memory에 접근 시 사용된다.
Stack Machine의 특징
- Postfix Notation(후위 표시식)이 사용되며, 이는 Stack에서 계산이 용이한 Formula이다.
Example. Infix vs Postfix
Infix Notation | Postfix Notation | |
1 + 2 * 3 | \(\leftrightarrow\) | 1 2 3 * + |
- Zero Address Machine (Zero Address Format) 에 속한다.
Operand는 항상 Top Of Stack (TOS)에 위치하기 때문에 따로 operand의 주소가 필요하지 않다.
- Push, Pop 연산을 통해 data를 load, store 시킨다.
Push (Load) : Memory → Stack
Pop (Store) : Stack → Memory
Example. Formula: "X = (A + B) * (C + D)" on Assembly Language for Stack Machine
PUSH A ! TOS <- M[A]
PUSH B ! TOS <- M[B]
ADD ! TOS <- (M[A] + M[B])
PUSH C ! TOS <- M[C]
PUSH D ! TOS <- M[D]
ADD ! TOS <- (M[C] + M[D])
MUL ! TOS <- ((M[A] + M[B]) * (M[C] + M[D]))
POP X ! M[X] <- TOS