보닛 밑의 모든 것.

나는 소비주의를 좋아하지 않는다.내가 가장 좋아하는 학자 중 한 명이라고 버트란 로소가 말한 적이 있다

"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은 둘 다 조금 있다.
  • 8080 레지스터 사용(단일 레지스터 파일)
  • Z80의 인코딩 구문 및 명령 확장 프로그램을 사용합니다.
  • 그러나 IX, IY를 사용하지 않았고 8080의 입력/출력 방안을 사용하지 않았다.샤프는 완전한 메모리 방안을 사용했기 때문에 이런 것은 필요 없다.
  • 는 8080과 유사하게 8비트 데이터 버스와 16비트 주소를 사용하며 64KB의 메모리를 찾을 수 있습니다.
  • 메모리 매핑은 박스 ROM, WRAM, 디스플레이 RAM, I/O 및 인터럽트 Enabler입니다.
  • 우리의 시계 속도는 약 4.2메가헤르츠인데, 이것은 결정 발진기에 의해 실현된 것이다.이 모든 기능은 3V DC, 0.6W 전원 공급 장치에서 작동합니다.

    (즉, CPU+ 전력 처리 장치 + 오디오 처리 장치)
    Gameboy의 8비트 CPU는 DMG CPU라고 하며 AF, BC, DE, HL, SP 및 PC 등 6개의 16비트 레지스터가 있습니다.

  • AF:AF는 두 개의 8비트 레지스터입니다. A와 F. A는 누적기입니다.

    만약 네가 마이크로컨트롤러 종류를 되돌려준다면, 이것은 펑 노이만 구조이고, 게다가 누적기도 있다
    F는 로고 레지스터로 특수한 용도의 레지스터로 8자리마다 다른 용도가 있다.
  • 제로 플래그(Z):
    수학 연산의 결과
    CP를 사용할 때 0 또는 두 값이 일치하는지 여부(정인 경우 호출)
    지시
  • 뺄셈 플래그(N):
    에서 뺄셈을 실행하면 이 비트를 설정합니다
    마지막 수학 지령.
  • 반진위 플래그(H):
    낮은 위치에서 진위가 발생하면 이 위치를 설정합니다
    마지막 수학 연산에서 물어뜯다.
  • 진입 플래그(C):
    마지막 진위에서 진위가 발생하면 이 위치를 설정합니다
    수학 연산 또는 레지스터 A가 작은 값인지 여부
    CP 명령을 실행할 때
  • BC, HL, DE는 공통 레지스터입니다.임시 스토리지, 프로그램 실행 중 복제와 같은 16비트 작업에 사용됩니다.대부분 기억이다.
  • PC는 메모리의 다음 명령을 가리키는 프로그램 카운터입니다.CPU는 PC를 사용하여 다음 작업을 수행합니다.
  • SP는 메모리의 현재 스택 위치를 가리키는 스택 포인터입니다.이것은 약간 보송보송할 수 있습니다. 만약 그것이 참기 어렵다면 최근의 공책을 잡으세요.만약 당신이 이미 이 글을 읽었다면 구글로 검색해 보세요. 나는 당신이 Stack이 무엇인지 알고 있다고 믿습니다.

    GameBoy의 스택은 일반적으로 변수와 반환 주소를 유지합니다.그것은 또한 매개 변수를 하위 루틴에 전달하는 데도 사용된다.따라서 정보를 창고로 전송하려면push, CALL, RST 명령을 사용해야 합니다.POP, RET 및 REI는 스택에서 정보를 추출하는 데 사용됩니다.GameBoy 스택 포인터(SP)는 스택 상단을 추적하는 데 사용됩니다.창고는 선진적인 데이터 구조이기 때문에 창고 꼭대기는 최신 데이터가 될 것이라는 것을 기억하십시오.
  • 이제 GameBoy에서 위치 0부터 GameBoy의 안내 ROM이 있는 위치를 실행합니다.위치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] 라파엘의 건축 게임 소년 글

    좋은 웹페이지 즐겨찾기