ISA와 어셈블리
RISC-V 함수의 시작 부분에서 'addi sp, sp, -16'을 실행하는 목적으로 올바른 것은?
- A스택을 주소가 작은 쪽으로 확장하여 16바이트의 작업 영역을 확보한다
- B스택 상의 16바이트를 해제한다
- Csp에 들어 있는 값에서 16을 빼서 반환값으로 돌려준다
정답과 해설 보기
정답: A. 스택을 주소가 작은 쪽으로 확장하여 16바이트의 작업 영역을 확보한다
RISC-V를 포함한 많은 ISA의 관례상 스택은 주소가 큰 쪽에서 작은 쪽으로 확장됩니다. sp를 16 줄이면 새로운 sp부터 원래 sp까지의 16바이트가 이 함수의 스택 프레임이 되어, 복귀 주소와 저장한 레지스터, 지역 변수를 둘 수 있습니다. 함수 끝에서 'addi sp, sp, 16'으로 sp를 되돌리면 영역이 해제되어 호출 전과 같은 상태가 됩니다.