시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/12장: Armv7 - AAPCS (2) 썸네일형 리스트형 [Arm프로세서] 함수를 호출하기 위한 설계 이번에는 Armv7 아키텍처 관점에서 AAPCS를 SP 레지스터와 LR 레지스터가 어떻게 바뀌는지 기준으로 설명합니다. 하지만 대부분의 시스템 소프트웨어 개발자는 SP와 LR 레지스터를 설정하는 어셈블리 명령어보다 C 언어로 프로그래밍합니다. 그래서 SP와 LR 레지스터를 보면 대부분 낯설게 느낍니다. 그래서 이번 절에서는 함수를 호출하는 예제 코드를 분석하면서 함수를 호출했을 때 SP와 LR 레지스터가 어떻게 바뀌는지 알아보겠습니다. 함수가 호출될 때의 세부 동작 원리 다음과 같은 함수를 작성했다고 가정하겠습니다. 01 int add_func(int x, int y) 02 { 03 int result = x + y; 04 printf("x:%d, y:%d \n", x, y); 05 06 return r.. Armv7 아키텍처에서의 AAPCS 관련 레지스터: SP와 LR 레지스터란 Armv7 아키텍처에서 정의된 범용 레지스터 중 SP(R13) 레지스터와 LR(R14) 레지스터는 AAPCS와 연관된 핵심 레지스터입니다. 먼저 범용 레지스터 가운데 SP, LR 레지스터의 역할을 알아봅시다. SP와 LR 레지스터의 역할 먼저 다음 그림을 보면서 Armv7 아키텍처에서 정의된 레지스터 중 AAPCS와 연관된 레지스터를 알아봅시다. 그림 12.1 Armv7 아키텍처의 레지스터 중 AAPCS와 연관된 레지스터 위 그림은 Armv7 아키텍처에서 동작 모드별로 정의된 레지스터 목록입니다. 그림의 아랫부분에 빗금으로 표시된 부분을 봅시다. 해당 부분의 윗부분에 있는 SP 레지스터를 보겠습니다. 그림의 가장 왼쪽에 SP가 있는데, 같은 행에 각 동작 모드별로 SP_usr, SP_svc, SP_ab.. 이전 1 다음