🏷️RISC-V Stack Segement
- RISC-V가 프로시저를 호출하는 과정은 다음과 같다.
![](https://velog.velcdn.com/images/mysprtlty/post/d23d2e61-3c01-4fa8-bb2f-796730595b83/image.jpg)
- x10-x17의 레지스터로 최대 8개의 인자를 넘길 수 있지만, 이보다 더 많은 인자를 넘겨야 할 때(9개 이상의 인자를 넘겨야 할 때) 추가적인 인자는 stack에 push해서 전달한다.
- 복귀 주소가 들어가 있는 x1 레지스터의 값(Return adderess)을 stack에 저장한다.
- 호출 후에도 값의 보존이 보장되어야 하는 register값들을 stack에 저장한다.
- 지역 변수를 위한 공간을 스택에 할당한다.
- 🖇️cf. 사실 변역 프로그램(컴파일러)이 얼마나 똑똑한지에 따라(최적화를 잘하는지) 지역 변수는 레지스터에 할당 될 수도 있기 때문에, 참고 정도만 하는 것이 좋다.