본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/13장: Armv8 - AAPCS

(3)
[Arm프로세서] Armv8 - 링크 레지스터: X30 이어서 X30 레지스터를 스펙 문서 분석을 통해 알아봅시다. 출처: ARM® Cortex®-A Series Programmer's Guide for ARMv8-A https://developer.arm.com/documentation/den0024/latest/ 6.4 Flow control ... Calls to subroutines, where it is necessary for the return address to be stored in the link register (X30), use the BL instruction. This does not have a conditional version. BL behaves as a B instruction with the additional effect..
[Arm프로세서] Armv8 - SP_ELn과 X30 레지스터란? [Arm프로세서] Armv8 - SP_ELn과 X30 레지스터란? Armv8 아키텍처에서 정의된 레지스터 중 SP_ELn과 X30 레지스터는 AAPCS와 연관된 핵심 레지스터입니다. 전체 레지스터 목록 중에서 SP_ELn과 X30 레지스터를 먼저 소개하겠습니다. 전체 레지스터 목록 중 SP_ELn과 X30 레지스터 다음 그림을 보면서 Armv8 아키텍처에서 정의된 레지스터 중 AAPCS와 연관된 레지스터 목록을 알아봅시다. 그림 13.1 Armv8 아키텍처의 레지스터 목록 중 AAPCS와 연관된 레지스터 위 그림은 Armv8 아키텍처에서 정의된 레지스터 목록입니다. 그림에서 빗금으로 표기된 박스를 보겠습니다. SP_EL1은 EL1(익셉션 레벨1)에서 실행되는 SP 레지스터, SP_EL0는 EL0(익셉션 ..
[Arm프로세서] Armv8 - AAPCS 관련 레지스터 Armv8 아키텍처의 AAPCS를 다루기에 앞서 Armv7에서 정의된 AAPCS의 주요 내용을 요약하면 다음과 같습니다.  서브루틴을 호출하면 프로세스의 스택 공간에 레지스터를 푸시한다.  'BL [주소]' 명령어를 실행해 서브루틴으로 분기하면 Arm 코어는 링크 레지스터인 R14에 복귀할 주소를 업데이트한다.  서브루틴을 호출할 때 전달되는 인자는 R0 ~ R3 레지스터에 저장된다.  함수의 리턴값은 R0 레지스터에 저장된다. 위에서 설명한 내용은 Armv8 아키텍처 관점에서 다음과 같이 바꿔서 설명할 수 있습니다.  서브루틴을 호출하면 프로세스의 스택 공간에 레지스터를 푸시한다.  'BL [주소]' 명령어를 실행해 서브루틴으로 분기하면 Arm 코어는 링크 레지스터인 X30에 복귀할 주소를 ..