[Excel] 엑셀로 16비트 CPU 만들기가 가능??
Becain
2024.01.29 15:32
2,549
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
포인트 111,240
경험치 14,155
[레벨 12] - 진행률
40%
가입일 :
2020-07-29 23:57:30
-
Mobile - ‘테슬라 폰’이 실제로 존재할까?2024-12-19
-
Computer - Nvidia App, 게임 성능 저하? 해결 방법은 간단합니다!2024-12-18
-
Mobile - 삼성 갤럭시 S25, AI로 강화된 새로운 빅스비 공개될까?2024-12-16
-
Mobile - 애플 폴더블 기기, 드디어 현실화? 19인치 맥북부터 18.8인치 아이패드까지!2024-12-16
-
Mobile - iPhone보다 실용적인 Galaxy S25의 매력, One UI 7.0에서 찾다2024-12-13
-
Mobile - iOS 18.2 업데이트 후에 바로 변경해야 할 8가지 설정2024-12-12
-
Computer - AMD Strix Halo APU 유출! RTX 4060을 넘어서는 성능?2024-12-12
-
Computer - 구글, 브라우저에서 작업 대신 해주는 AI 'Project Mariner' 공개!2024-12-12
최신글이 없습니다.
댓글목록 0