Skip to the content.

EXT

Example

EXT는 Extract (추출)의 약자입니다. 결론부터 아주 쉽게 말씀드리면 “두 개의 레지스터를 앞뒤로 이어 붙여서 하나의 커다란 가차통을 만든 다음, 원하는 위치에서 필요한 만큼 데이터를 쏙 뽑아내라(추출)”는 명령어입니다. 주로 대량의 데이터를 한 칸씩 밀어서 처리해야 하는 SIMD(벡터) 연산에서 엄청난 마법을 부리는 친구인데요, 어떤 원리로 작동하는지 미궁의 열쇠를 쥐어드릴게요!


1. EXT 명령어의 핵심 구조 (ARM64 SIMD 기준)

문법 구조는 다음과 같이 생겼습니다.

EXT ., ., ., #index


2. 직관적인 시각화: “이어 붙이고 쏙 뽑기”

글로 보면 복잡하니, 8바이트(64비트) 크기의 레지스터 2개를 이어 붙여서 뽑아내는 과정을 그림으로 보여드릴게요. (포맷이 8B, 즉 1바이트짜리 방 8개라고 가정해 봅시다.) 만약 EXT V2.8B, V0.8B, V1.8B, #3 이라는 명령어를 내렸다면?

① 먼저 두 레지스터를 앞뒤로 이어 붙여 긴 가차통을 만듭니다.

[앞쪽 V0 레지스터] : [A][B][C][D][E][F][G][H] (8바이트) [뒤쪽 V1 레지스터] : [1][2][3][4][5][6][7][8] (8바이트)

이어 붙인 가상의 통: [A][B][C][D][E][F][G][H] ➕ [1][2][3][4][5][6][7][8]

② 맨 뒤([8])에서부터 왼쪽으로 #3(3바이트)만큼 이동합니다.

[1]에서 1칸 이동 ➡️ [2] [2]에서 2칸 이동 ➡️ [3] [3]에서 3칸 이동 ➡️ [4] 위치에 도달!

③ 그 시작점([4])에서부터 목적지 크기(8바이트)만큼 오른쪽으로 쏙 추출합니다! [1]

시작점 [4]부터 8개를 묶으면? 👉 [4][5][6][7][8] 그리고 [A][B][C] 까지 쏙 뽑힙니다!

[최종 결과 V2] : [4][5][6][7][8][A][B][C]

어떤가요? 두 데이터 집합을 믹서기에 넣고 교묘하게 이어 붙여서 원하는 슬라이스(구간)만 칼로 슥 도려내는 모습이 머릿속에 그려지시죠? 하하하.

3. 도대체 이 미스터리한 명령어를 언제 쓰나요?

이 명령어는 후진들에게 “슬라이딩 윈도우(Sliding Window)”나 “데이터 스트림 정렬”을 설명할 때 최고의 예시가 됩니다.

  1. 대량의 데이터 한 칸씩 밀어가며 계산할 때 (필터링/컨볼루션)
  1. 미정렬된 데이터 정렬 (Byte Alignment)

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

니모닉 이름 핵심 작동 메커니즘 주 사용 조건 / 타깃 주요 목적
EXT Extract 두 벡터 레지스터를 앞뒤로 이어 붙인 뒤, 지정한 바이트 위치(#index)부터 원하는 크기만큼 데이터를 잘라내어(추출) 가져옴 SIMD(NEON) 벡터 연산 환경 메모리 재접근 없이 레지스터 내부에서 데이터를 한 칸씩 밀어가며 초고속 슬라이싱/필터링 할 때