Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

9365
557
421924


[Arm프로세서] AAPCS: Armv8: C 코드 최적화 - 자주 호출되는 함수는 inline 키워드로 선언 Armv8: 함수 호출 규약

이번 장에서 서브 루틴을 호출하면 다음과 같은 동작을 수행한다고 배웠습니다. 

   * X0-X7 레지스터에 함수의 인자를 저장
   * 서브 루틴은 stp, ldp 명령어를 사용해 링크 레지스터를 백업
   * 서브 루틴에서 반환하는 값을 X0 레지스터에 저장 

그런데 다음과 같은 상황에서 함수 호출 시 실행되는 어셈블리 명령어는 오버헤드가 될 수 있습니다.

   * 함수가 실행하는 코드는 1~2줄 밖에 안되는 간단한 코드
   * 매우 자주 호출되는 함수

이 경우 inline 키워드로 함수를 선언하면, 컴파일러는 함수의 코드를 함수를 호출한 부분에 복사합니다. 결국 함수 호출 시 실행되는 명령어를 줄일 수 있습니다.

Armv8 아키텍처: AAPCS(함수호출 규약)

   ❑ 스택과 관련된 명령어 
      * stp 명령어  
      * sub 명령어  
      * ldp 명령어  
   ❑ 브랜치와 복귀 명령어
      * bl 명령어  
      * RET 명령어
AAPCS와 C 코드 최적화


Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자





핑백

덧글

댓글 입력 영역