
CS/어셈블리
[SPARC] 34. Leaf Subroutine & Pointer Type Argument
지난 글에서는 서브루틴에서 구조체를 다루는 방법을 정리하였다. %sp+64 위치에 구조체 시작 주소를 넘겨서 직접 해당 구조체를 다루는 것이 포인트였다. 서브루틴 내에서는 %fp+64로 접근하는 것이 차이점이었다. 이번 글에서는 리프 서브루틴에 대해 정리하고자 한다. Leaf Subroutine 트리에서 자식 노드가 없는, 즉, degree = 0 인 노드를 leaf 노드라고 한다. 함수의 call graph 를 그렸을 때, leaf 노드에 해당하는 함수는 가장 마지막에 호출되어 더 이상 함수를 추가로 호출하지 않는 함수를 의미한다. 리프노드는 그냥 평범한 서브루틴과 비슷하게 구현하면 된다. 그런데 만약 리프노드에서 수행하는 작업이 너무 간단해서 새 스택 프레임을 할당할 필요가 없어 save, resto..