IEEE SPECTRUM

어셈블리어를 즐겁게 배울 수 있는 3가지 게임

photo of tablet use of Human Resource Machine                       사진 : Randi Klett

아, 어셈블리어. 고수준 언어들이 과시하던 프로그맹 구조, 데이터 핸들링, 수많은 기능들 모두가 없어진 것이다. 어셈블리어로 브랜치(branch), 바이트(byte), 운이좋으면 뻴셈(subtraction) 명령어도 사용할 수 있다. 사실, 직접적으로 컴퓨터의 상태를 조작함으로써 강력하지만 소수의 사람들이 어셈블리어를 선택해 사용하고 있다.

그래서 나는 어셈블리어로 재미있게 코딩할 수 있는 공개된 게임을 하나도 아니고 세 개나 있다는 것에 놀라웠다. 정확히 이 중 어느것도 하드웨어에서 어셈블리어를 짤 수는 없다. 그것들은 모두 가장 작은 명령어 집합으로 가상 시스템을 사용한다. 그럼에도 그들은 복잡한 동작들을 간단한 명령어로 짜내는 것으로 어셈블리 코딩의 핵심을 담고있다.

그 첫번째 게임은 Tomorrow Corporation 에서 2015년에 출시한  Human Resource Machine 이다. 그리고 윈도우, 맥, 리눅스에서, 심지어 닌텐도 스위치에서도 이용할 수 있다. 이 게임에서는 플레이어가 사무실 직원이 되어 “in” 컨베이어 벨트에 도착하는 숫자와 문자를 이용해서 요구하는 결과를 “out” 컨베이어 벨트에 올려놓는다.  게임을 시작하자마자 같이 일 할 두개의 명령어를 받는다. 더 많은 복잡한 도전들을 해결하고 만나면서 더 많은 명령어들이 주어진다. 도전하는 난이도는 한 쌍의 입력 숫자 중 큰 수를 출력하는 것 부터, 가변 길이 시퀀스를 정렬하는 것까지 다양하다.

screenshot of Human Resource Machine

 

게임은 여기 -> Human Resource Machine

사진: Tomorrow Corporationscreen shot of Shenzhen I/Oscreenshot of TIS-100 

.

Human Resource Machine 은 고도로 추상화 됬기 때문에 누군가는 곧은 퍼즐게임으로 여기고 할 수 있으며 현명함은 거의 없다. 하지만 지식이 많은 사람들은 사무실 직원을 레지스터로, 임시적인 사무실 바닥위의 작업공간을 랜덤 엑세스 메모리로, 많은 도전들을 고전 기초 컴퓨터 과학 문제로 인지한다. 이 게임은 아주 적은 명령어들로 시작하고 인터페이스가 매우 직관적이기 때문에 비기너를 프로세스 내부동작으로 끌어들이는 좋은 방법이 될 것이다. 하지만, 게임의 줄거리가 그 만큼 플레이어들이 레벨을 완료할 수 있게 동기부여를 하지 못한다.

TIS-100, Zachtronics 에서 보다 정교한 플레이어를 전제로 하긴 했으나 이 문제를 해결했다. 또한 2015년에 출시되어 윈도우, 맥, 리눅스 그리고 아이패드에서 이용가능하다. 아이패드 버전(TIS-100P 로 2016년에 출시됨)은 흑백 텍스트 디스플레이가 당신이 올드스쿨 마이크에 붙어있던 찾기를 기대한 것인것 처럼 보이는 화상 키보드가 결합되어 이 게임이 타겟으로한 사용자들에 대한 명확한 아이디어를 제공한다. 그리고 실제로, 이 게임은 향수적인 역작으로 다운로드 가능한 매뉴얼로 완성되어 1980년대에 프로그래밍을 했던 사람들의 인정을 받는다. 그것은 실제 매뉴얼로 부터 가장 중요한 비트의 2세대 또는 3세대 복사와 동일해 보이게 설계되었다.

이 게임의 줄거리는 당신의 삼촌 랜디로 부터 TIS-100 컴퓨터를 물려받는다. 어셈블리어로 문제를 풀어가는 중에 기계의 진짜 목적에 대한 힌트를 주면서 컴퓨터 메모리의 손상된 부분을 해독한다. TIS-100는 서로 메세지를 전달하는 계산 노드로 구성된 평범하지않은 병렬 아키텍쳐를 가지고 있다. 퍼즐들은 복잡성이 굉장히 빠르게 증가하지만 모두 할 수 있고 만약 옛날에 코드를 짜는 것과 같은 낭만적인 버전으로 돌아갈 무언가를 찾고 있다면, TIS-100은 해줄 수 없다.

하지만 Zachtronics 는 우리에게 현재까지 남아있는 최근의 타이틀인 Shenzhen I/O 를 보여준다. Shenzhen I/O 는 지난 11월에 원도우, 맥 그리고 리눅스를 지원하는 버전을 출시했다. 이 비참한 게임에선, 당신은 서샹의 전기공학 엔지니어가 되어 오늘한 실제로 물건들이 만들어지는 중국(Shenzhen, China) 으로 가게된다. Shenzhen I/O 는 작업을 달성하기위해 상호연결된 모듈들을 프로그래밍하는 TIS-100 와 함께 게임 메커니즘을 제공한다. 하지만 라이오나 디스플레이와 같은 다양한 모듈(가짜 데이터시트로 완성하기)을 소개한다. Shenzhen I/O, 이 게임에서 가장 중요한 점은 당신이 빌드하기 위해 들여놀은 다양한 전자기기에 대한 입력/출력 데스트 스위트를 통과하기 위해 정확한 신호의 타이밍을 받는 것이다. 많은 제품들이 재미있고,  EE는 타이밍 사이클 지점을 파악하기위해 NOP(no operation) 명령을 때때로 신중하게 배포할 때까지 많이 고려할 것이다.

이 기사는 2017년 5월에 출간된 “Some Assembly(Language) Required” 에 언급됩니다.

기사 원본 :  Three Computer Games That Make Assembly Language Fun

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s