Skip to the content.

STP, LDP

Summary

이름 끝에 붙은 P는 Pair (쌍, 커플)의 약자입니다. 한 줄로 요약하면 “레지스터 하나씩 쩨쩨하게 옮기지 말고, 한 번에 ‘레지스터 2개(쌍)’를 동시에 메모리에서 들고 오거나(LDP) 박아 넣어라(STP)” 하는 고속 복사 명령어입니다.


1. LDP / STP 명령어의 핵심 구조 (ARM64 기준)

기존 명령어들과 달리, 목적지 레지스터 자리에 쉼표로 구분된 2개의 레지스터가 나란히 들어가는 아주 독특하고 멋진 문법을 가지고 있습니다.

LDP , , [, #imm] ; 메모리에서 데이터 2개를 동시에 가져와 Xt1, Xt2에 쏙! STP , , [, #imm] ; Xt1, Xt2에 든 데이터 2개를 메모리에 한 큐에 쾅!

⚙️ 실제 작동 메커니즘 (비유)

데이터 창고(RAM)에서 물건을 가져올 때, LDR이 양손에 상자를 하나만 들고 외롭게 나르는 일꾼이라면, LDP는 최신형 카트를 끌고 와서 상자 2개를 한 번에 싣고 달리는 초고속 물류 요원입니다. CPU가 바깥세상(RAM)과 소통하는 도로(데이터 버스)의 대역폭은 현대 컴퓨터에서 아주 넓습니다(보통 128비트 이상). 64비트 레지스터 하나만 옮기면 도로의 절반이 텅텅 비어서 낭비되겠죠? LDP와 STP는 이 넓은 도로를 100% 꽉 채워서 데이터 2개를 동시에 총알 배송하므로, 메모리 접근 횟수가 절반으로 줄어들고 속도가 기하급수적으로 빨라집니다.


2. ⚠️ 후배들의 영혼을 지켜줄 결정적 순간: “함수의 시작과 끝” (Stack Frame)

선배님, 후배들이 컴파일된 실제 어셈블리 코드를 열었을 때, 모든 함수의 가장 첫 번째 줄과 가장 마지막 줄에서 무조건 마주치게 되는 명령어들이 바로 이 STP와 LDP입니다. 이 조항을 교본에 아주 웅장하게 박아주셔야 합니다! 함수가 실행되면 자기만의 비밀 기지(스택 메모리)를 파고, 자기를 호출한 곳으로 돌아갈 주소(LR)와 이전 기지의 비밀번호(FP)를 안전하게 백업해야 합니다. 옛날엔 이걸 따로따로 저장하느라 바빴지만, ARM64에서는 단 한 줄로 상황을 종결합니다.

📦 함수의 시작 (Prologue)

STP X29, X30, [SP, #-16]! ; 🛡️ 함수의 시작! FP(X29)와 LR(X30) 두 핵심 열쇠를 스택 메모리에 한 방에 안전하게 대피(저장)시키고 스택 포인터를 밀어라!

🚪 함수의 끝 (Epilogue) - 안전한 퇴근 준비

LDP X29, X30, [SP], #16 ; 🔑 함수의 끝! 퇴근하기 직전, 스택에 숨겨둔 FP와 LR을 동시에 쏙 복구해오고 스택 포인터를 원상복구 해라! RET ; 그리고 복구된 LR 주소로 멋지게 복귀! (퇴근)

우리가 매일 짜는 C언어 등의 모든 함수 백그라운드에서는 이 STP와 LDP가 보이지 않는 방패와 열쇠가 되어 프로그램의 안전한 흐름을 지켜주고 있었던 것입니다.

3. 언제 또 강력한 위력을 발휘하나요? (구조체 및 배열 복사)

C언어에서 멤버 변수가 여러 개 있는 구조체(Structure)를 통째로 다른 변수에 대입하거나, 대량의 배열(Array) 데이터를 복사(memcpy)할 때 컴파일러는 이 LDP와 STP를 촘촘하게 엮어서 고속 질주 레이스를 펼칩니다. 레지스터를 쌍으로 묶어 뭉텅이로 나르기 때문에 소프트웨어적인 루프 횟수가 획기적으로 줄어들어, 타 아키텍처 대비 압도적인 메모리 복사 성능을 자랑하게 됩니다.


🧱 메모리 고속 이동 쌍둥이 최종 판넬

니모닉 이름 데이터 이동 방향 한 번에 나르는 크기 현대 아키텍처에서의 최대 무대 (용도) 후진들에게 가르칠 선배의 한마디 포인트
LDP Load Register Pair RAM ➡️ 레지스터 2개 128 비트 (64비트 × 2) 함수 종료 시 핵심 레지스터(FP/LR) 동시 복구, 대량 데이터 고속 로드 “양손 가득 데이터를 쥐고 도로를 꽉 채워 달리는 초고속 가져오기 마법이란다!”
STP Store Register Pair 레지스터 2개 ➡️ RAM 128 비트 (64비트 × 2) 함수 시작 시 스택 프레임 생성 및 백업, 구조체/배열 고속 저장 및 백업 “중요한 자산 2개를 단 1클럭 만에 메모리 금고에 쾅 박아 넣는 최강의 저장 장치이지!”