• 북마크
  • 접속자 88
IT 노하우 뉴스 정보 공유 커뮤니티

IT 노하우 뉴스 정보 공유 커뮤니티

Office

[Excel] 엑셀로 16비트 CPU 만들기가 가능??

Becain 레벨
2024.01.29 15:32 2,384 0 0 0
5
쿠팡방문하고 계속읽기

본문

해외 유튜버가 엑셀을 이용을 해서 16bit CPU 를 만들고 이 CPu 를 통해서 게임도 만들었다고 하네요... 굉장한.... ㅎㅎ

이미지 3096.png

프로젝트 개요

  • 유튜버 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
로그인 후 추천 또는 비추천하실 수 있습니다.

댓글목록 0

등록된 댓글이 없습니다.