TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 26 READS

브라우저에서 Z80 어셈블리를 한 줄씩 쳐보는 REPL, 50년 된 CPU로 배우는 컴퓨터의 밑바닥

무슨 일이 있었냐면

일본의 인디 게임 개발자 abagames(Kenta Cho)가 2018년에 만든 Z80 REPL이라는 웹 페이지를 소개할게요. 이 분은 브라우저에서 돌아가는 초소형 게임을 수백 개 만든 걸로 유명한데요. 이 도구는 게임은 아니고, 브라우저에서 Z80 어셈블리 명령어를 한 줄씩 입력하면 즉시 실행되어 CPU 레지스터가 어떻게 바뀌는지 보여주는 학습 도구예요. 설치도 없고 회원가입도 없어요. 링크를 열고 타이핑을 시작하면 끝이에요.

Z80이 뭐냐면

1976년 Zilog라는 회사가 만든 8비트 CPU예요. 인텔 8080과 호환되면서 더 싸고 명령어도 많아서 1980년대를 완전히 휩쓸었죠. 영국의 ZX Spectrum, 일본과 한국에서 인기였던 MSX 컴퓨터, 오락실의 팩맨과 갤러그 기판, 심지어 미국 고등학생들이 쓰는 TI 그래픽 계산기까지 다 Z80이에요. 게임보이의 CPU도 Z80의 사촌쯤 되는 변형이고요. 한국에서는 삼성 SPC-1000 같은 초기 국산 컴퓨터와, 대우가 MSX 기반으로 만든 게임기 재믹스가 Z80을 썼어요. 40대 이상 개발자라면 어릴 때 이 CPU 위에서 게임을 했을 확률이 꽤 높아요.

놀라운 건 이 CPU가 2024년에야 단종됐다는 거예요. 거의 50년을 생산했다는 뜻이죠. 그만큼 단순하고 검증된 설계라서 임베디드 장비나 교육용으로 오래 쓰였어요.

REPL이 뭐냐면, 그리고 왜 어셈블리에 REPL이 필요할까요

REPL은 Read-Eval-Print Loop의 약자예요. 코드 한 줄을 읽고(Read), 실행하고(Eval), 결과를 보여주고(Print), 다시 입력을 기다리는(Loop) 대화형 환경이죠. 터미널에서 python을 치고 들어가면 나오는 그 화면이 REPL이에요. 한 줄 쳐보고 결과 보고, 또 한 줄 쳐보고. 배울 때 이만한 게 없죠.

그런데 어셈블리는 전통적으로 이런 환경이 없었어요. 코드를 파일에 쓰고, 어셈블러로 기계어로 바꾸고, 링커로 묶고, 실제 하드웨어나 에뮬레이터에 올려서 돌리는 과정을 다 거쳐야 했거든요. 명령어 하나가 진짜 레지스터에 값을 넣는지 확인하려고 30분씩 세팅하는 건 진입장벽이 너무 높죠. Z80 REPL은 이 과정을 통째로 없앴어요.

어떻게 동작하나

내부 구조는 세 단계예요. 입력한 한 줄을 어셈블러가 기계어 바이트로 바꾸고, 자바스크립트로 구현된 Z80 에뮬레이터가 그 바이트를 실행하고, 실행 후의 레지스터와 플래그 상태를 화면에 뿌려요. 예를 들어 LD A, 5를 치면 A 레지스터에 5가 들어가는 게 바로 보이고, 이어서 ADD A, 3을 치면 A가 8로 바뀌어요. 여기에 SUB A, 8을 치면 A는 0이 되면서 제로 플래그가 켜지는 걸 눈으로 확인할 수 있죠.

플래그가 뭐냐면, CPU 안에는 계산 결과의 특징을 기록하는 작은 깃발들이 있어요. 결과가 0인지, 자리 올림이 났는지, 음수인지 같은 것들이요. 조건 분기(if문)가 실제로는 이 깃발을 보고 점프할지 말지 정하는 건데, 고급 언어만 쓰면 평생 볼 일이 없는 부분이에요. 이 도구에서는 명령어 하나 칠 때마다 깃발이 바뀌는 게 보이니까 개념이 자연스럽게 들어와요.

Z80은 레지스터가 A, B, C, D, E, H, L 정도에 16비트 짝(BC, DE, HL)과 스택 포인터, 프로그램 카운터가 전부라서, 하루 정도 만져보면 전체 그림이 머릿속에 들어와요. 최신 x86-64 CPU는 명령어가 수천 개라 이런 식으로 훑기가 불가능하거든요.

업계 흐름에서 보면

브라우저가 저수준 학습 도구의 플랫폼이 되는 흐름의 한 조각이에요. Godbolt Compiler Explorer는 C++ 코드가 어떤 어셈블리로 바뀌는지 실시간으로 보여주고, 8bitworkshop 같은 사이트는 브라우저 안에서 아타리나 NES 게임을 어셈블리로 만들게 해주죠. 웹어셈블리 덕분에 에뮬레이터 성능도 충분해져서, 이제 「환경 세팅」이라는 진입장벽이 거의 사라지고 있어요.

한국 개발자에게 주는 시사점

당장 실무에서 Z80을 쓸 일은 없겠죠. 하지만 레지스터, 플래그, 스택, 메모리 주소라는 개념은 지금 여러분이 쓰는 CPU도 똑같이 갖고 있어요. 컴파일러가 뭘 하는지, 함수 호출이 스택에서 어떻게 일어나는지, 포인터가 왜 그냥 숫자인지가 한 시간만 만져보면 몸으로 이해돼요. 임베디드나 리버스 엔지니어링, 보안 쪽으로 갈 생각이 있다면 더더욱 좋은 출발점이고요. 그리고 사이드 프로젝트 관점에서도 「자바스크립트로 8비트 CPU 에뮬레이터 만들기」는 규모가 적당하고 배우는 게 많은 주제예요.

정리하면

50년 된 CPU를 브라우저에서 한 줄씩 굴려보는 것만으로, 고급 언어 밑에 숨어 있던 컴퓨터의 밑바닥이 보인다. 여러분은 어셈블리를 처음 접했을 때 어땠나요? 아직 안 해보셨다면, 어떤 계기가 있으면 한번 해볼 마음이 드실까요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://abagames.github.io/z80-repl/index.html
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...