[컴퓨터 시스템] 13. x86-64와 ARM64는 무엇이 같고 다를까
어셈블리를 보다 보면 ISA마다 문법과 레지스터 이름이 달라 보여서 완전히 다른 세계처럼 느껴질 수 있습니다. 하지만 장기적으로 더 중요한 것은 차이만이 아니라 공통 구조를 읽는 능력입니다.
이번 글에서는 x86-64와 ARM64를 완전히 따로 외우지 않고, 공통 질문과 눈에 띄는 차이를 나눠 보는 방식으로 정리합니다.
- ISA가 달라도 공통으로 봐야 할 질문
- x86-64와 ARM64의 대표적 차이
- 레지스터, 명령 형식, 메모리 접근 방식 비교
- 차이가 있어도 공통 감각이 더 중요한 이유
- 비교 기반 미니 문제
1. 먼저 공통 질문을 잡아야 한다
ISA가 달라도 결국 묻는 질문은 비슷합니다. 값을 어디에 두는가, 어떻게 계산하는가, 메모리에는 어떻게 접근하는가, 분기는 어떻게 표현하는가 같은 질문입니다.
이 공통 질문을 먼저 잡아야 x86-64와 ARM64 차이가 단순 암기가 아니라 설계 선택의 차이처럼 읽힙니다.
| 공통 질문 | 왜 중요한가 |
|---|---|
| 값은 어디에 두는가 | 레지스터 중심 사고를 잡는다 |
| 메모리는 어떻게 접근하는가 | load/store 감각을 잡는다 |
| 흐름은 어떻게 바꾸는가 | 분기와 호출을 읽게 해 준다 |
2. 문법이 달라도 본질은 비슷하다
x86-64는 역사적으로 복잡한 흔적이 더 남아 있고, ARM64는 더 규칙적인 인상을 주는 편입니다. 하지만 둘 다 레지스터와 메모리, 산술, 분기라는 기본 블록으로 프로그램을 실행한다는 점은 같습니다.
| 비교 지점 | x86-64 인상 | ARM64 인상 |
|---|---|---|
| 명령 형태 | 다양한 형태가 섞여 보이기 쉽다 | 더 규칙적으로 느껴지는 경우가 많다 |
| 레지스터 이름 | 역사적 이름 흔적이 남아 있다 | 번호형 이름이 비교적 일관적이다 |
| 학습 감각 | 예외가 많아 보일 수 있다 | 패턴이 보이기 쉽다 |
3. 둘 다 결국 레지스터와 메모리 사이를 오간다
문법 차이가 커 보여도, 실행 구조 수준에서 보면 둘 다 레지스터를 중심으로 값을 다루고 필요할 때 메모리와 오갑니다. 이 공통점이 더 중요합니다.
그래서 ISA 비교를 할 때는 표면 문법보다 '값을 어디에 두고 어디서 계산하는가'를 먼저 잡는 편이 좋습니다.
4. 현실적인 비교 질문 하나를 보자
예를 들어 '두 값을 더해 세 번째 위치에 저장한다'는 일은 어느 ISA에서도 존재합니다. 차이는 그 일을 적는 문법과 관습이 조금씩 다를 뿐, 데이터 이동과 계산이라는 본질은 같습니다.
goal: c = a + b
질문 1) 어떤 레지스터에 a와 b를 둘까
질문 2) 더한 결과를 어디에 둘까
질문 3) 메모리에 다시 써야 한다면 어떤 접근이 필요할까5. 직접 해볼 문제: 차이보다 공통 구조를 먼저 적어 보자
ISA 비교를 할 때는 차이점 열거보다 공통 구조를 먼저 적는 습관이 좋습니다. 그래야 차이가 어디서 왜 생기는지 덜 혼란스럽습니다.
이번 글에서 기억할 것
스스로 점검
다음 글 예고
다음 글에서는 CPU보다 한 층 바깥으로 나가, 메모리 계층과 cache가 왜 프로그램 속도를 크게 바꾸는지 정리합니다.
'학습 자료 글 > 컴퓨터시스템' 카테고리의 다른 글
| 컴퓨터시스템 기초 15. 코드 최적화는 왜 측정과 locality가 먼저일까 (0) | 2026.03.31 |
|---|---|
| 컴퓨터시스템 기초 14. 메모리 계층은 왜 프로그램 속도를 바꿀까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 12. 배열과 구조체는 어셈블리에서 왜 주소 계산이 될까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 11. 레지스터와 스택 프레임은 함수 호출을 어떻게 드러낼까 (0) | 2026.03.31 |
| 컴퓨터시스템 기초 10. 어셈블리는 왜 C와 하드웨어 사이의 번역본일까 (0) | 2026.03.31 |