2013-07-28 2 views
3

현재 Java에서 NES 에뮬레이터를 만들고 있습니다. 6502 코어는 몇 가지 작은 문제를 제외하고 99 %를 처리합니다. 문제는 NES 용 6502를 에뮬레이션하는 것입니다.하지만 PS1, N64 또는 DOS와 같은 방식으로 관심을 보인 적이 한번도 없습니다. 필자는 앞서 말한 시스템처럼 화면에 간단한 2D 스프라이트를 그릴 때보 다 더 많은 일을 할 수있는 콘솔/시스템을 에뮬레이트하고 싶었습니다.x86 아키텍처와 같은 것을 에뮬레이션 할 때 6502와 같은 어떤 문제가 발생합니까?

내가 물어보고 싶은 것은 : 무엇이 x86 프로세서와 같은 것을 6502에 비해 에뮬레이션하기 어렵게 만들었습니까? 내가 생각해 낼 수있는 유일한 것은 거대한 x86 명령어 세트이며, x86 에뮬레이터는 코드의 가독성보다는 효율성을 향해 좀 더 프로그래밍되어야한다. 나는 DosBox 소스 코드를 살펴 봤기 때문에 이것을 묻고 있는데, 6502 오픈 소스 에뮬레이터와 비교하면 DosBox의 x86 코어 소스는 원격으로 이해할 수 없다. 모든 프로세서가 연산 코드 목록을 찾아 체계적으로 실행하는 경우 어떻게 복잡성에 큰 차이가 있습니까?

답변

4

6502 및 8088/86은 다소 비슷할 것이며, 둘 다 CISC 등이 될 것입니다. x86에는 6502와 같은 더 많은 지시 사항이 있지만 주제가 다릅니다.

DOS 에뮬레이터 이상으로 80386 이상을 사용한다면 훨씬 더 큰 노력이 필요합니다. 뿐만 아니라 프로세서, 또한 시스템. 6502 기반의 게임 시스템은 플랫폼, 소행성, nes, c64 등등과 관련하여 너무 많이 사용하지 않습니다. Dos는 BIOS와 그 다음에 도스가 필요합니다. 거기서 무료로. 비디오, 하드 디스크 등과 같은 주변 장치도 있습니다.

많은 dos 응용 프로그램은 하드웨어와 직접 대화를하므로 BIOS 호출을 에뮬레이션하는 것 이상의 기능을 수행해야합니다.

이 모든을 추가하고 도스/x86 시스템을위한 노력의 수준에 대한 DOS 용 (하지 더 이상 당신은 효율성을위한 설계가 에뮬레이터를 만들 필요 없다 6502

보다 훨씬 더 예).당신이보고있는 소스 (MAME은 많은 프로세서 시뮬레이터의 좋은 원천입니다)는 속도를 위해 설계되었고 대부분은 거의 읽을 수 없습니다.

x86은 보는 방향에 관계없이 고통스러운 지침입니다. 만약 6502가 지금까지 해왔 던 모든 일이라면 어떻게해야 할 지 명확하지 않는 한 다음에 다른 것을 선택할 것입니다. 어쩌면 고정 된 길이의 명령어 세트를 팔이나 밉스 (잘 고정 길이 버전)처럼 설정할 수 있습니다. 또는 규모의 감각을 얻으려면 z80을 실행하고 우주 침략자 또는 갈라가 또는 뭔가를 실행하십시오. (흠, 우주 침략자는 8080입니까?) (z80 파생물은 게임 보이에 있습니다.)

2

언급 한 바와 같이 x86에는 다소 광범위한 명령어 세트가 있습니다. 5 개의 레지스터가있는 8 비트 마이크로 프로세서와 6502와 같은 약간의 이상한 명령어와 x86 같은 CPU를 지원하는 숙련 된 CISC 32 비트 멀티 유저 OS는 단순한 차이가 있습니다.

  • 는 CISC 의미 많은 지침이 많은 사이클이 걸릴 수 있습니다 복잡한 일을 할 수 있습니다

    x86 프로세서는 있기 때문에 더 복잡합니다.

  • 캐싱

  • 는 프리 페치 입력 큐를 다단계가있다 FPU를 지원하는 경향

  • 페이징에 대한 역방향 호환성을 지원하는 많은

  • 지원을

  • multipl e 특권 레벨