- 어셈블리는 CPU 구조와 직접 맞닿아 있어 첫 학습 대상이 중요한데, 6502는 단순한 구조와 실제 생태계를 함께 갖춘 입문용 플랫폼임
- 레지스터 6개와 원래 명령어 56개만으로 레지스터, 로드/스토어, 논리·산술 연산, 분기 같은 기본 개념을 빠르게 익힐 수 있음
- Apple II, Commodore VIC 20, Commodore 64, BBC micro 등에 쓰인 실제 CPU라 에뮬레이터와 재현 기기, 무료 자료를 활용한 실습 기반 학습이 쉬움
- Easy 6502는 웹에서 바로 코드를 써볼 수 있는 JavaScript 기반 어셈블러와 시뮬레이터를 제공해 짧은 시간에 감을 잡기 좋음
- Z80, 현대 RISC, x86-x64도 배울 가치가 있지만, 첫 단계에서는 복잡도가 낮은 6502가 학습 부담을 줄여줌
6502가 입문용으로 적합한 이유
- 어셈블리 프로그래밍은 고수준 언어보다 하드웨어와의 연결이 강해, 처음 접하는 CPU가 학습 난이도를 크게 좌우함
- 6502 어셈블리는 오늘날 실무 애플리케이션 작성에 쾌적한 환경은 아님
- 레트로 프로그래밍 자체에 관심이 없다면 6502에 오래 머물 필요는 없음
- 입문용 플랫폼으로서의 장점은 단순함과 실재성임
- 단순한 구조 덕분에 기본 개념을 빠르게 익힐 수 있음
- 실제 기기, 에뮬레이터, 책과 온라인 자료가 많아 학습 경로를 잡기 쉬움
-
레지스터와 명령어가 작게 유지됨
- 6502는 레지스터가 6개뿐임
- 누산기 1개
- 인덱스 레지스터 2개
- 상태 레지스터
- 스택 레지스터
- 프로그램 카운터
- 6502에서 유일한 16비트 레지스터는 프로그램 카운터임
- 적은 레지스터 수는 실제 애플리케이션 작성에는 제약이지만, 레지스터의 역할과 동작을 이해하는 데 도움이 됨
- 원래 6502 명령어 세트는 56개 명령어만 포함함
- 이 작은 명령어 집합으로도 주요 명령어 유형을 배울 수 있음
- 로드/스토어
- 논리 연산
- 산술 연산
- 분기
- 이런 유형들은 현대 CPU에도 어떤 형태로든 남아 있음
- x86-x64는 레지스터와 명령어 수를 세는 것부터 쉽지 않고, ARM 같은 현대 RISC 명령어 세트도 작고 단순하다고 보기 어려움
- 6502는 레지스터가 6개뿐임
실제 생태계와 다른 선택지
-
오래됐지만 살아 있는 생태계
- 6502는 1970년대 중반 MOS Technology가 Motorola 6800의 저렴하고 단순화된 버전으로 도입함
- 같은 팀이 이전에 Motorola 6800을 개발했음
- 이후 빠르게 인기를 얻어 여러 유명 마이크로컴퓨터에 사용됨
- Apple II
- Commodore VIC 20
- Commodore 64
- BBC micro
- 이런 기기들의 에뮬레이터를 찾기 쉽고, 일부는 현대적 재현 기기도 있음
- 6502의 후속 제품은 글 작성 시점에도 생산 중이며, Olimex의 Neo6502 같은 새 기기도 6502 계열을 실행함
- 무료 학습 자료는 인터넷에 많고, 상당수를 6502.org에서 찾을 수 있음
- 6502는 1970년대 중반 MOS Technology가 Motorola 6800의 저렴하고 단순화된 버전으로 도입함
-
바로 실습할 수 있는 학습 자료
- Easy 6502는 Nick Morgan의 전자책으로, 짧게 6502를 접해보려는 학습자에게 적합함
- 텍스트와 이미지뿐 아니라 JavaScript로 작성된 6502 어셈블러와 시뮬레이터를 포함함
- 웹페이지에서 간단한 6502 어셈블리 코드를 바로 작성할 수 있음
- Visual6502.org는 어셈블리 학습 도구라기보다 6502의 단순함을 시각적으로 보여주는 자료에 가까움
-
다른 입문 후보와의 차이
- 교육용으로 만든 가상 CPU는 깨끗하고 “완벽한” 명령어 세트를 가질 수 있지만, 6502만큼 풍부한 학습 자료와 커뮤니티를 갖추기 어려움
- Z80, 6809, 68000 같은 레트로 CPU도 좋은 선택지임
- 세 CPU는 진지한 프로그래밍에는 6502보다 더 낫다고 평가됨
- 기본 개념 학습에서는 6502의 단순함이 더 유리함
- Z80은 6502보다 레지스터가 훨씬 많고 대체 레지스터 세트도 있어 시작하기가 덜 쉬움
- ARM, MIPS, RISC-V 같은 현대 RISC 아키텍처는 어느 시점에는 진지한 어셈블리 프로그래머가 배워야 할 대상임
- 다만 입문용으로는 이상적이지 않음
- 이들의 단순함은 명령어 세트보다 칩 내부 구현 측면에 더 가까움
- 현대 마이크로프로세서는 대부분 고수준 언어로 프로그래밍되며, 직접 어셈블리 명령어를 쓰는 경험이 CPU 설계 우선순위에서 높지 않음
- ARM64에서 64비트 상수를 레지스터에 로드하려면 비트 시프트를 포함해 4개 명령어가 필요할 수 있음
- 6502에서 상수를 레지스터에 로드하는 과정은 그에 비해 단순함
- x86-x64는 현대 데스크톱과 서버에서 가장 대중적인 명령어 세트라고 볼 수 있고 ARM이 따라잡는 중임
- 32비트 크기 제약을 받지 않고, 피연산자 수가 가변적인 풍부한 명령어가 있어 ARM보다 코딩이 쉬운 측면도 있음
- 하지만 초보자에게는 여전히 매우 복잡하며, 40년의 역사가 x86-x64를 더 단순하게 만들지는 않음