7P by xguru 2020-04-18 | favorite | 댓글 3개

- 1970년대 8비트 머신에서 사용하던 Chip-8 인터프리터를 JS로 구현
- 웹/CLI/네이티브 앱과 연동
- 실제로는 인터프리터지만, 에뮬레이터와 가깝기 때문에 에뮬레이터를 만드는 법을 배우려는 사람에게 적합.
- Memory(4KB), Program Counter, Register, Index Register, Stack, Stack Pointer, Timer 등을 변수로 선언
CPU를 구성하고, 4x4 HEX 키보드, 64x32 디스플레이 를 구현
- 자바스크립트 코드로 Raylib Node.js 바인딩을 이용해서 다양한 네이티브 환경에서 실행가능

8비트 구조라 코드가 복잡하지 않아서 꽤 읽기 재미있습니다.
아래 코드가 인상적이었어요.

class CPU {
ㅤconstructor() {
ㅤㅤthis.memory = new Uint8Array(4096)
ㅤㅤthis.registers = new Uint8Array(16)
ㅤㅤthis.stack = new Uint16Array(16)
ㅤㅤthis.ST = 0
ㅤㅤthis.DT = 0
ㅤㅤthis.I = 0
ㅤㅤthis.SP = -1
ㅤㅤthis.PC = 0x200
ㅤ}
}

스택이 16바이트로 너무 작다고 생각했는데, 메모리가 4k라 가능할것 같네요.

아~ 16워드, 워드 16개