본문 바로가기
한국으로/ARM

Tail Call

by 영킴. 2018. 7. 24.

Tail Call


func0 --> func1 --> func2 --> func3 순서로 함수가 호출되는 경우, 
func0에서 분기할 때만 'BL' 명령어를 쓰고,
그 뒤에 호출되는 함수 셋에서 'B' 명령어를 쓰면,
LR(Link Register)은 func0 의 분기 지점을 여전히 가리키고 있게된다.

이 때, func2에서 func3 호출 뒤 'BX LR' 명령으로 바로 func0로 리턴할 수 있다.

매번 새로 호출된 함수에서 'BL' 명령으로 LR을 갱신시키지 않으면 Tail Call의 효과를 누릴 수 있다.
LR가 가리키는 복귀 주소인 func0로 즉시 리턴되기 때문에 효율적이다.







'한국으로 > ARM' 카테고리의 다른 글

MMU  (0) 2018.07.29
Cortex-A9 Coprocessor  (0) 2018.07.29
Interrupt Controller  (0) 2018.07.29
ARM Mode(모드) and Exception(예외)  (0) 2018.07.24
정수 승격과 형변환 문제  (0) 2018.07.22
다중 메모리 이동: LDM, STM  (0) 2018.07.22
AAPCS와 레지스터 테이블  (0) 2018.07.21
ARM의 특수 용도 레지스터  (0) 2018.07.21