스택 구조
스택 구조. 스택의 속성 last in first out(LIFO) 동작을 하는 저장장치 (storage device) stack pointer(SP) 라는 단지 수를 세는 역할을 하는 주소 레지스터를 가진 메모리 스택 포인터는 스택의 꼭대기 (top) 의 주소를 지시 스택의 2 가지 동작 스택 포인터 레지스터를 하나씩 증가 혹은 감소시킴으로써 수행 push: 스택의 꼭대기에 자료를 넣는 동작 pop: 스택의 꼭대기로부터 자료를 꺼내는 동작
스택 구조
E N D
Presentation Transcript
스택 구조 • 스택의 속성 • last in first out(LIFO)동작을 하는 저장장치(storage device) • stack pointer(SP)라는 단지 수를 세는 역할을 하는 주소 레지스터를 가진 메모리 • 스택 포인터는 스택의 꼭대기(top)의 주소를 지시 • 스택의 2가지 동작 • 스택 포인터 레지스터를 하나씩 증가 혹은 감소시킴으로써 수행 • push: 스택의 꼭대기에 자료를 넣는 동작 • pop: 스택의 꼭대기로부터 자료를 꺼내는 동작 • 동작은 SP 레지스터를 하나씩 증가(push) 혹은 감소(pop)시킴으로써 수행
레지스터 스택 • 스택의 구성 • 대규모 메모리의 일부분으로 구성 • 제한된 수의 메모리 워드로 구성 • 제한된 수의 레지스터들로 구성 • 메모리 스택의 예 • 64워드의 메모리 스택의 블럭도
SP는 6비트: 64(26)워드의 스택 메모리 • FULL과 EMPTY: 스택의 full과 empty 상태를 표시하는 1비트 레지스터 • 초기상태: SP는 0, EMTY는 1, FULL은 0 • push 동작의 마이크로 연산 • SP ← SP + 1 • M[SP] ← DR • If(SP=Max) then (FULL ← 1) • EMPTY ← 0 • pop 동작의 마이크로 연산 • DR ← M[SP] • SP ← SP - 1 • If(SP=0) then (EMPTY ← 1) • FULL ← 0
메모리 스택 • CPU에 부착시킨 RAM 메모리를 이용하여 구현 • 메모리의 일부분을 스택을 위해 할당 • 레지스터 중 하나를 SP로 사용 • 프로그램, 데이타, 스택 세그멘트를 가진 컴퓨터 메모리 • SP의 초기값이 4001일 때 • 스택이 주소를 감소시키면서 • 커가는 모양을 표시
push 동작 • SP ← SP - 1 • M[SP] ← DR • pop 동작 • DR ← M[SP] • SP ← SP + 1 • 역 Polish 표기 • 스택의 구조는 어떤 수식의 값을 구하는 데 있어 매우 효율적 • 연산식의 구성에 있어서 역폴리시 개념을 도입 • 연산식의 구성 • A+B : infix 개념 • +AB : prefix(polish) 개념 • AB+ : postfix(역polish) 개념
산술식의 연산 • 수식을 역polish 형태로 변환 • 피연산자를 순서대로 스택에 push • 연산자가 나타나면 다음과 같은 마이크로 연산1) 스택의 top에 있는 두 값이 연산에 사용된다 2) 스택의 값이 pop되고 연산의 결과가 top의 아래에 있는 피연산자의 자리를 차지 • 예) (3*4)+(5*6) • 역polish 형태: 34*56*+ • 스택 동작