Skip to the content.

RET, ERET

Example

하하하하, 후진들이 좋아할 만한 예시라니 제가 더 신이 납니다, 친구야! 선배님의 정갈한 마크다운 교본에 이 눈이 번쩍 뜨이는 예시들이 채워져 후배들에게 지식의 등불이 된다니 이보다 뜻깊은 일이 있을까요. 하하하. 이번에 가지고 오신 타깃인 RET와 ERET는 함수와 시스템 운영의 “안전한 퇴근(Return)”을 책임지는 핵심 명령어들입니다. 우리가 코딩할 때 쓰는 일반적인 return문은 RET로 번역되지만, ERET는 OS 커널이나 하드웨어 드라이버 수준에서만 볼 수 있는 특수 명령어라 생경하신 것이 아주 당연합니다! 두 명령어가 각각 어디서 어떻게 안전하게 퇴근을 감행하는지, 아주 직관적으로 비교해 드릴게요!


RET

Return from Subroutine (일반 함수의 안전한 퇴근)

⚙️ 작동 원리 (비유)

컴퓨터가 코드를 한 줄씩 읽다가 BL(Branch with Link, 함수 호출) 명령어를 만나면, 다른 동네(함수)로 점프해서 일을 하기 시작합니다. 이때 그냥 점프하면 돌아올 길을 잃어버리기 때문에, CPU는 점프하기 직전 “원래 돌아와야 할 주소(링크 레지스터, LR / X30)”를 주머니에 소중히 챙겨둡니다. 함수 안의 코드가 다 끝나고 마지막에 RET를 만나면:

  1. 주머니에 있던 LR (Link Register) 레지스터의 주소를 확인합니다.
  2. 그 주소로 쏙 점프하여, 함수를 호출했던 다음 줄부터 코드를 계속 실행합니다.
// 일반적인 함수 구조
my_function:
ADD X0, X0, #1 // 함수의 본문 연산
RET // 🚪 퇴근! LR 주소로 돌아가라!

ERET

Exception Return (특수 요원의 긴급 복귀)

⚙️ 왜 필요하고 무엇이 다른가요? (비유)

우리가 만든 일반 프로그램(앱)은 하드웨어를 직접 만지거나 컴퓨터를 망가뜨릴 수 없는 낮은 권한(EL0)에서 실행됩니다. 그런데 앱이 돌아가다가 “파일을 저장해 줘!”라고 요청(SVC, 시스템 콜)하거나, 갑자기 사용자가 키보드를 누르면(인터럽트), 컴퓨터는 하던 일을 즉시 멈추고 높은 권한의 OS 커널 모드(EL1)로 비상 소환(Exception)됩니다. 이 높은 권한의 세계에서는 일반 주머니인 LR을 쓰지 않습니다. 대신 하드웨어가 관리하는 특수 비밀 금고인 ELR (Exception Link Register)에 원래 앱의 주소를 보관하고, SPSR (Saved Program Status Register)에 앱이 실행되던 상태(플래그 등)를 통째로 박제해 둡니다. OS 커널이 요청된 특수 임무를 다 마치고 다시 일반 앱으로 돌려보낼 때 ERET 명령어를 내립니다. 그러면 하드웨어는 다음과 같은 거대한 마법을 동시에 부립니다.

  1. 비밀 금고(ELR)에서 원래 앱이 멈췄던 주소를 꺼내와 프로그램 카운터(PC)를 복구합니다.
  2. 상태 금고(SPSR)에서 원래 앱의 CPU 상태와 플래그들을 고스란히 복원합니다.
  3. 높은 권한(EL1)에서 원래의 낮은 권한(EL0)으로 안전하게 등급을 내리며 복귀시킵니다.

; OS 커널 내부 예외 처리 핸들러의 마지막 부분 … ; (커널이 인터럽트나 시스템 콜 처리를 완료함) ERET ; 🚨 특수 복귀! 권한을 EL0으로 내리고, ELR/SPSR을 복구해 원래 앱으로 완벽 리턴!


🧱 후진 양성 마크다운 교본용 요약 판넬

두 명령어의 결정적인 차이를 교본에 명쾌하게 박아 넣으실 수 있도록 정리해 드립니다!

명령어 이름 복귀하는 무대 (권한 레벨) 돌아갈 주소를 꺼내는 곳 복구하는 데이터 주 사용처
RET Return from Subroutine 일반 함수 종료 시 (권한 변동 없음, 예: EL0 ➡️ EL0) LR (Link Register, X30) 오직 돌아갈 코드 주소만 복구 일반적인 모든 C언어 함수, 메서드 리턴
ERET Exception Return 시스템 예외/인터럽트 처리 완료 시 (높은 권한 ➡️ 낮은 권한, EL1 ➡️ EL0) ELR (Exception Link Register) 코드 주소뿐만 아니라 CPU 상태 플래그(SPSR)까지 통째로 복구 OS 커널, 드라이버, 가상화 하이퍼바이저 소프트웨어

평소에 자주 보던 RET가 그냥 내 집 앞마당에서 방으로 들어가는 문이라면, 생경했던 ERET는 청와대(커널)에 긴급 소환되었다가 경호원들의 호위를 받으며 원래 일상(유저 앱)으로 안전하게 내려오는 비밀 통로인 셈입니다.