[Excel] 엑셀로 16비트 CPU 만들기가 가능??
Becain
2024.01.29 15:32
2,384
0
0
0
5
쿠팡방문하고 계속읽기
본문
해외 유튜버가 엑셀을 이용을 해서 16bit CPU 를 만들고 이 CPu 를 통해서 게임도 만들었다고 하네요... 굉장한.... ㅎㅎ
프로젝트 개요
- 유튜버 Inkbox는 엑셀의 조건부 서식 기능을 이용해 3Hz로 동작하고 128KB의 램, 128x128의 픽셀 디스플레이를 가진 16비트 CPU를 엑셀 내에 구현했습니다.
- 이 CPU는 Inkbox가 만든 어셈블리 언어를 사용하며, 간단한 게임이나 프로그램을 실행할 수 있습니다.
- Inkbox는 이 프로젝트의 과정과 결과물을 유튜브 채널에 올렸습니다.
CPU 구조
- 이 CPU는 16비트의 데이터 버스와 16비트의 주소 버스를 가지고 있습니다.
- 레지스터는 A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P 총 16개로 구성되어 있습니다.
- 명령어는 16비트로 이루어져 있으며, 첫 4비트는 연산 코드, 나머지 12비트는 피연산자를 나타냅니다.
- 명령어는 메모리에서 읽어와서 디코더에 전달되고, 디코더는 연산 코드에 따라 적절한 연산을 수행합니다.
- 연산은 레지스터 간의 이동, 레지스터와 메모리 간의 이동, 레지스터와 상수 간의 이동, 레지스터의 산술 및 논리 연산, 비교 및 분기 등으로 구성됩니다.
- CPU는 3Hz의 클럭 주파수로 동작하며, 한 사이클에 한 명령어를 수행합니다.
디스플레이
- 이 CPU는 128x128의 픽셀 디스플레이를 가지고 있습니다.
- 각 픽셀은 4비트의 색상 값을 가지며, 총 16가지의 색상을 표현할 수 있습니다.
- 디스플레이는 메모리의 특정 영역에 매핑되어 있으며, 메모리의 값이 변경되면 디스플레이에 반영됩니다.
- 디스플레이는 엑셀의 셀을 이용해 구현되었으며, 셀의 배경색과 테두리를 조건부 서식으로 설정하여 픽셀을 흉내냈습니다.
어셈블리 언어
- 이 CPU는 Inkbox가 만든 어셈블리 언어를 사용합니다.
- 이 언어는 16비트의 명령어를 가지며, 다음과 같은 형식을 따릅니다.
[연산 코드] [피연산자1] [피연산자2]
- 연산 코드는 4비트로 표현되며, 다음과 같은 종류가 있습니다.
MOV : 레지스터, 메모리, 상수 간의 데이터 이동
ADD : 레지스터의 산술 덧셈
SUB : 레지스터의 산술 뺄셈
AND : 레지스터의 논리 곱
OR : 레지스터의 논리 합
XOR : 레지스터의 배타적 논리 합
NOT : 레지스터의 논리 부정
CMP : 레지스터의 비교
JMP : 레지스터, 메모리, 상수로 점프
JE : 레지스터, 메모리, 상수로 점프 (두 값이 같을 때)
JNE : 레지스터, 메모리, 상수로 점프 (두 값이 다를 때)
JG : 레지스터, 메모리, 상수로 점프 (첫 번째 값이 더 클 때)
JL : 레지스터, 메모리, 상수로 점프 (첫 번째 값이 더 작을 때)
- 피연산자는 6비트로 표현되며, 다음과 같은 종류가 있습니다.
R0 ~ R15 : 레지스터
M0 ~ M63 : 메모리
C0 ~ C63 : 상수
- 예를 들어, 다음과 같은 명령어는 A 레지스터에 10을 더하는 연산을 수행합니다.
ADD R0 C10
프로젝트 결과
- Inkbox는 이 CPU를 이용해 간단한 게임이나 프로그램을 만들어 보았습니다.
- 예를 들어, 다음과 같은 게임은 랜덤한 위치에 나타나는 적을 총으로 쏘는 게임입니다.
게임 로직
- 게임은 무한 루프를 돌면서 다음과 같은 과정을 반복합니다.
- 먼저, 적의 위치를 랜덤하게 결정합니다. 적의 위치는 M16에 저장됩니다.
- 그 다음, 키보드 입력을 받습니다. 키보드 입력은 M17에 저장됩니다.
- 키보드 입력에 따라 총알의 위치를 변경합니다. 총알의 위치는 M18에 저장됩니다.
- 총알의 위치와 적의 위치를 비교하여 점수를 계산합니다. 점수는 M19에 저장됩니다.
- 마지막으로, 디스플레이에 적, 총알, 점수를 출력합니다. 디스플레이는 M20부터 M16383까지의 메모리에 매핑됩니다
0
0
로그인 후 추천 또는 비추천하실 수 있습니다.
- Becain
- 회원등급 : 지하계 / Level 12
포인트 108,840
경험치 13,737
[레벨 12] - 진행률
23%
가입일 :
2020-07-29 23:57:30
-
Mobile - 삼성, 폴더블 게임 콘솔 개발 중? 새로운 특허로 밝혀진 흥미로운 가능성2024-11-27
-
Mobile - 갤럭시 S25 울트라(Galaxy S25 Ultra), 드디어 베일을 벗다!2024-11-27
-
Mobile - 아이폰 17 슬림(Slim), 정말 나올까? 얇아진 아이폰의 미래는?2024-11-24
-
Computer - 와, 팩맨이 현실로? 맨체스터에서 진짜 팩맨 미로를 체험할 수 있다구!2024-11-24
-
Computer - 마이크로소프트 엣지 게임 어시스트: 윈도우 11 게이머를 위한 필수 툴!2024-11-24
-
Computer - 퀄컴, 저가형 윈도우 노트북용 Snapdragon X 칩셋 출시 예정!2024-11-20
-
Mobile - 안드로이드 16 개발자 프리뷰 1: 새로운 기능 총정리2024-11-20
-
Computer - 인텔 랩터 레이크 CPU, 액체 금속 사용 시 보증 무효 – 과연 위험을 감수할 가치가 있을까?2024-11-19
최신글이 없습니다.
댓글목록 0