ISA와 어셈블리
RISC-V 호출 규약에서 s0~s11이 '호출 대상 저장(callee-saved)' 레지스터라는 의미로 올바른 것은?
- A호출된 함수가 이들을 사용한다면 원래 값을 저장해 두었다가 복귀하기 전에 되돌려 놓는다
- B호출하는 쪽 함수가 호출 전에 반드시 모두 0으로 만들어 둔다
- COS만 사용할 수 있는 레지스터이며 사용자 프로그램은 사용할 수 없다
정답과 해설 보기
정답: A. 호출된 함수가 이들을 사용한다면 원래 값을 저장해 두었다가 복귀하기 전에 되돌려 놓는다
호출 대상 저장 레지스터는 함수 호출을 거쳐도 값이 유지됨이 약속되어 있습니다. 호출된 함수가 s0 등을 사용하고 싶을 때는 처음에 스택에 저장하고 복귀하기 전에 원래대로 되돌립니다. 호출하는 쪽은 함수를 호출한 뒤에도 계속 쓰고 싶은 값을 s 계열 레지스터에 두면 스스로 다시 저장할 필요가 없습니다. 루프 변수 등이 흔히 여기에 놓입니다.