보닛 밑의 모든 것.
8405 단어 microprocessorsgamingelectronics
"It is preoccupation with possessions, more than anything else, that prevents us from living freely and nobly."
하지만 나는 닌텐도 제품에 대해 특별한 편애를 가지고 있다는 것에 내기를 걸어도 된다.어둡고 단조로운 현실 생활에 지치기 전에 내가 유일하게 진정으로 좋아하는 게임은 《게임보이 전진》의 포켓몬이다.나는 포켓몬 머치가 있는 틀을 갖고 싶었지만 주제에서 벗어났다.
이제 우리는 이 부분을 완성했습니다. 아름답고 아름다운 게임 보이의 경전을 봅시다!
게임기는 나만큼 크고, 그것의 처리 능력은 나보다 강하다.SHARP LR35902라는 8비트 프로세서가 있으며 Intel 8080과 Zilog Z80 사이의 혼합체입니다.Z80은 8080의 향상된 기능으로 간주됩니다.Z80에는 단위 주소 지정, 메모리, 레지스터에서의 위치 이동/회전이 있는 증강 명령 집합이 있습니다.프로그램 순환, 프로그램 카운터 상대 점프, 블록 I/O, 바이트 검색 명령이 있습니다.Z80에는 새로운 IX 및 IY 인덱스 레지스터와 더 나은 인터럽트 시스템도 있습니다.샤프 LR3590은 둘 다 조금 있다.
(즉, CPU+ 전력 처리 장치 + 오디오 처리 장치)
Gameboy의 8비트 CPU는 DMG CPU라고 하며 AF, BC, DE, HL, SP 및 PC 등 6개의 16비트 레지스터가 있습니다.
AF:AF는 두 개의 8비트 레지스터입니다. A와 F. A는 누적기입니다.
만약 네가 마이크로컨트롤러 종류를 되돌려준다면, 이것은 펑 노이만 구조이고, 게다가 누적기도 있다
F는 로고 레지스터로 특수한 용도의 레지스터로 8자리마다 다른 용도가 있다.
수학 연산의 결과
CP를 사용할 때 0 또는 두 값이 일치하는지 여부(정인 경우 호출)
지시
에서 뺄셈을 실행하면 이 비트를 설정합니다
마지막 수학 지령.
낮은 위치에서 진위가 발생하면 이 위치를 설정합니다
마지막 수학 연산에서 물어뜯다.
마지막 진위에서 진위가 발생하면 이 위치를 설정합니다
수학 연산 또는 레지스터 A가 작은 값인지 여부
CP 명령을 실행할 때
GameBoy의 스택은 일반적으로 변수와 반환 주소를 유지합니다.그것은 또한 매개 변수를 하위 루틴에 전달하는 데도 사용된다.따라서 정보를 창고로 전송하려면push, CALL, RST 명령을 사용해야 합니다.POP, RET 및 REI는 스택에서 정보를 추출하는 데 사용됩니다.GameBoy 스택 포인터(SP)는 스택 상단을 추적하는 데 사용됩니다.창고는 선진적인 데이터 구조이기 때문에 창고 꼭대기는 최신 데이터가 될 것이라는 것을 기억하십시오.
0000000100000000
에서 카세트에 대한 첫 번째 설명을 찾으실 것입니다. 잠시 후에 더 많은 토론을 진행하겠습니다.메모리에서 지령을 얻는 전형적인 방법은 이 매력적인 자체 해석 위조 코드와 유사하다.
1. variable program_Counter = 0x0100
2. variable operation = fetch_Operation(PC)
3. switch(operation){ case no_Operation{break}; case operation{operation; break;}
//The fetch_Operation would be
define operation{return memory[program_Counter++]
이제 Z80과 GB의 CPU는 문법이 비슷한 언어를 사용하기 때문에 우리가 진정한 GB 코드를 볼 때 너무 놀라지 마세요. 왜냐하면 Z80과 LR35902는 비슷한 코드를 가지고 있기 때문입니다.예를 들어 명령 확장기는 둘 중 하나입니다 (조작코드 0xcb).명령에 대한 중요 설명
자, 이제 이 명령을 받았습니다. 이 명령을 실행해야 합니다.8비트 로드 명령과 16비트 로드 명령이 있습니다.그들의 작업은 물건을 A위치에서 B위치로 불러오는 것이다. 예를 들어 레지스터의 내용을 창고로 불러오는 것이다.마지막으로 8비트 산술과 논리 연산 (예를 들어 레지스터에 저장된 값을 증가) 이 있다.DMG CPU 중에는 16비트 레지스터에서만 작동하는 16비트 산술 연산이 많이 없습니다.변위 및 회전 명령도 있습니다(예:
00010000
-> 00100000
.중지 (중단될 때까지 중단), NOP (아무 일도 하지 않음), 중단 설정/해제 등 여러 가지 제어 작업이 있습니다.그리고 나서 점프 동작을 얻을 수 있습니다. 그것을 사용하면 메모리의 모든 위치로 점프할 수 있습니다.
우리 기억 얘기 좀 하자.
데이터는 CPU에 대해 약간 모호하다.우리가 현실 세계에서 처리하는 모든 이 시끄러운 전선은 CPU와 무관하다.그것은 데이터를 가져와 처리하는 처리 단원이다.CPU는 모든 데이터를 처리하는데, 어떤 것은 정확하고, 어떤 것은 잘못된 것이지만, 그것은 무자비하고, 알 수 없는 기계로 데이터를 수신하고, 대량으로 데이터를 출력한다.
주소 버스는 CPU의 좋은 친구로 데이터를 제공합니다.주소 버스는 데이터를 전송하는 데 사용되는 읽기/쓰기 노선입니다.
주소 버스도 여러분의 친구입니다!주변 장치와 테이프는 모두 주소 버스에 있습니다!이제 우리 좀 더 깊이 들어가자.
메모리 및 메모리 매핑 입력/출력
메모리 매핑 I/O(MMIO)는 외부 메모리와 메모리 공간을 공유하는 경향이 있습니다.MMIO는 CPU와 주변 장치를 연결하는 방법일 뿐입니다.
네가 위에서 본 것은 게임보이의 일반 기억 지도인데, 나는 here에서 얻었다.그들은 GameBoy에 대해 깊이 있게 알고 있습니다. 저는 그들의 글과 다른 문장(아래로 연결)으로 이 문장을 연구하고 외칩니다!
우리는 메모리의 처음 두 영역인 ROM과 전환 가능한 ROM 라이브러리에 특히 관심을 기울일 것이다.
0000-3FFF 16KB ROM Bank 00 (in cartridge, fixed at bank 00)
4000-7FFF 16KB ROM Bank 01..NN (in cartridge, switchable bank number)
8000-9FFF 8KB Video RAM (VRAM) (switchable bank 0-1 in CGB Mode)
A000-BFFF 8KB External RAM (in cartridge, switchable bank, if any)
C000-CFFF 4KB Work RAM Bank 0 (WRAM)
D000-DFFF 4KB Work RAM Bank 1 (WRAM) (switchable bank 1-7 in CGB Mode)
E000-FDFF Same as C000-DDFF (ECHO) (typically not used)
FE00-FE9F Sprite Attribute Table (OAM)
FEA0-FEFF Not Usable
FF00-FF7F I/O Ports
FF80-FFFE High RAM (HRAM)
FFFF Interrupt Enable Register
0100-014F에서 본 메모리는 내부 정보 영역입니다.닌텐도의 로고가 있는데 여기서부터 입구점을 만들고 안내 과정을 거쳐 메인 카트리지 프로그램으로 넘어간다.현재 우리는 다른 메타데이터 코드와 로고를 뛰어넘을 것이다.이것이 바로 게임기의 CPU다.나는 탄약통의 작업 원리를 약간 연구했지만 그다지 깊이 들어가지 않았다.언젠가, 내가 탄약 시스템을 알게 될 때, 나는 이곳으로 돌아갈 것이다!
GameBoy에 대한 자세한 내용은 Rodrigo의 블로그here를 참조하십시오.이 글의 많은 연구는 라파엘의 게임보이 건축 시리즈를 읽은 것으로 읽을 수 있다here.물론 저는 여러분께 제가 가장 좋아하는 다른 두 가지 자원Game Boy CPU Manual과 Pan DocEverything You Always Wanted To Know About GameBoy을 남겼습니다.
만약 당신이 이 글을 읽는 것을 좋아한다면, 그 유행하는 단추로 당신의 사랑을 표현해 보세요.내가 어디에서 개선할 수 있는지, 아니면 너에게 무슨 문제가 있다면.로드리고의 계발을 받아 나는 이런 엔진 덮개 아래의 글을 더 많이 쓸 것이니 계속 써 주십시오!
아비나 프밀, 사인해.
이미지 학점:
[1] http://meseec.ce.rit.edu/551-projects/spring2014/4-1.pdf
[2] https://www.quora.com/What-is-an-accumulator-in-computer-science
[3] GameBoy CPU 브로셔
[4] 쌓인 자유 코드 캠프
[5] 라파엘의 건축 게임 소년 글
Reference
이 문제에 관하여(보닛 밑의 모든 것.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abhinavmir/gameboy-everything-under-the-hood-1p0b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)