시스템 프로그래밍

10-2. 함수 호출 인자의 전달과 PUSH & POP 명령어 디자인

CalebHong 2022. 5. 25. 11:35

함수 호출 인자의 전달방식

 - 실제로는 역순으로 스택 메모리에 채워짐(8이 먼저, 그리고 7이 저장 됨)

 - "SP가 가리키는 현재 위치에 전달되는 인자값을 저장하고 나서, SP를 증가시켜 다음 메모리 주소를 가리키게 한다."

 

함수 호출 인자의 전방식의 문제점

 - (STORE 대상 레지스터, 목적지 메모리 주소)로 명령어를 전달해야 되기 때문에 STORE 7, sp 와 같은 명령어를 사용할 수 없음

 - 이를 해결하기 위해 2가지 명령어를 사용해야 함

 1) 숫자 7을 레지스터에 저장하는 명령어: ADD r1(레지스터), 7, 0 으로 7을 r1 레지스터에 저장

 2) sp를 메모리에 저장하는 명령어: STORE sp, 0x40

 

PUSH 명령어 완성

ADD r1, 7, 0

STORE sp, 0x40

STORE r1, [0x40] (Indirect Mode)

ADD sp, sp, 4 (SP 증가)

 

POP의 기능

ADD sp, sp, -4 또는 SUB sp, sp, 4