DUJINLABS.COM

Linux v6.18.37 · ARM64

ARM64 어셈블리 — 수업에서 풀어 읽기

코드의 동작을 말로 설명하는 자료입니다

기존 코드 분석을 바탕으로, 수업에서 한 줄씩 짚으며 설명할 수 있도록 별도 원고를 만들었습니다. 각 파일에서 해결하려는 문제를 먼저 살펴보고, 명령의 동작을 풀어 읽은 뒤 질문으로 확인합니다. 기준 소스는 모두 Linux v6.18.37입니다.

범위는 arch/arm64/kernel/*.S 바로 아래의 18개 파일입니다. 하위 디렉터리는 포함하지 않습니다. 주석·빈 줄을 포함한 원문은 그대로 제공하며, 명령·지시문·라벨이 있는 2316개 줄에 설명을 붙였습니다.

처음 읽는다면: 스택·분기·매크로 예제부터 보기 · 기존 코드 분석 보기

수업에서 읽는 순서

  1. 기초: 개념 설명 → smccc-call.S의 인자 이동 → cpu-reset.S의 분기와 주소
  2. 운영체제 핵심: head.S의 부팅 → entry.S의 예외와 문맥 전환 → sleep.S의 재개
  3. 심화: 벡터 상태·추적·펌웨어·커널 교체를 읽은 뒤 이미지 배치와 재배치를 연결합니다.

한 번에 파일 전체를 강의하기보다 한 함수나 매크로씩 읽고, 레지스터와 메모리의 변화 및 분기 목적지를 학생이 직접 설명하도록 진행할 수 있습니다.

코드 한 줄의 전후 상태

18개 파일의 각 설명 줄에 레지스터·메모리 그림을 덧붙였습니다. 각 파일에서 ‘행 그림’을 펼쳐 보실 수 있습니다. 링크 스크립트는 빌드할 때의 배치 규칙으로 구분합니다.

cpu-reset.S · 두 경로를 한 단계씩 따라가기 · entry.S · 예외 진입과 복귀 · sleep.S · 문맥 저장과 복원

파일별 설명

파일설명 주제원문 / 설명 줄
head.S
그림 · GIF
부팅 준비와 C 초기화 진입523 / 321
entry.S
그림 · GIF
예외 진입·복귀와 태스크·스택 전환1100 / 730
cpu-reset.S
그림 · GIF
MMU를 끄고 새 진입점으로 이동하기53 / 22
efi-header.S
단계별 그림
Image 안의 EFI PE/COFF 헤더181 / 133
efi-rt-wrapper.S
그림 · GIF
EFI 호출용 스택 전환과 예외 복구87 / 48
entry-fpsimd.S
그림 · GIF
FP/SIMD·SVE·SME 레지스터 저장과 복원134 / 63
entry-ftrace.S
그림 · GIF
함수 진입과 반환을 추적하는 어셈블리357 / 161
hibernate-asm.S
그림 · GIF
최대 절전 이미지의 메모리 복원95 / 41
hyp-stub.S
그림 · GIF
초기 EL2 벡터와 VHE 전환258 / 160
kuser32.S
그림 · GIF
고정 주소에 놓이는 AArch32 보조 코드65 / 44
reloc_test_syms.S
단계별 그림
절대·상대 재배치 검사용 코드85 / 69
relocate_kernel.S
그림 · GIF
kexec 페이지 목록을 복사하고 새 커널 시작하기100 / 63
sigreturn32.S
그림 · GIF
32비트 시그널 복귀 트램펄린의 명령 바이트47 / 14
sleep.S
그림 · GIF
CPU 상태 저장과 절전 복귀155 / 88
smccc-call.S
그림 · GIF
SMC/HVC 인자 전달과 반환값 저장102 / 59
vdso-wrap.S
단계별 그림
64비트 vDSO 바이너리 포함24 / 14
vdso32-wrap.S
단계별 그림
32비트 vDSO 바이너리 포함19 / 12
vmlinux.lds.S
단계별 그림
커널의 코드·데이터·초기 테이블 배치411 / 274

자료 구성

기존 그림에 단계별 개념 그림 18개와 GIF 13개를 추가했습니다. GIF는 재생 버튼을 누르면 움직이며, 단계 버튼으로 한 장면씩 고정할 수 있습니다. 정지 장면 54개도 별도 이미지로 제공합니다. 예외 상태 저장·복원이나 구조체와 레지스터 사이의 값 이동부터 보실 수 있습니다.

각 문서에는 개념 설명, 원본 줄 번호와 코드, 해당 줄의 풀이, 그림, 질문 3개와 답, 전체 원문이 있습니다. 그림의 화살표 의미는 그림 안과 캡션에서 확인하실 수 있습니다. 설명 원고는 각 페이지의 Markdown 링크로도 제공됩니다.

기존 코드 분석 문서는 수정하지 않았습니다. 매크로의 전체 정의와 관련 C 함수까지 확인할 때는 연결된 기존 분석을 함께 사용하시면 됩니다.

맨 위로 ↑