저는 6502 에뮬레이터를 만들고 있습니다. (그리고 그 후에는 NES 에뮬레이터를 갖기 위해 다른 NES 구성 요소를 에뮬레이션 할 것입니다.) 그리고 분기 - 조건 명령 (relative)을 보았습니다. 이제, 내가 궁금해하는 것은 바이트가 2의 보수로 저장되거나 정규 음수 바이트로 저장되는 것으로 간주되는 것입니까? 여기의 의미는 다음과 같습니다가이 예를 제공부호가있는 바이트가있는 6502의 분기 조건 명령?
6502 개 문서 중 하나 (물론 비공식)에서: 문서에서
BEQ $A7 ;Branch-on-equal with value 0xA7
$F0 $A7 ;Translation into hex
를, 그것은 0xA7가 -39로 간주되어야하며, 표시되는 것을 말한다 다음과 같이 : (0부터 시작) 7 bith가 0 될 경우
는1 0 1 0 0 1 1 1 ;-39 dec
, 그냥 39 같습니다
0 0 1 0 0 1 1 1 ;39 dec
1 0 1 0 0 1 1 1
실제로 것 -89 : 그 의미 414,을 나는이 문서 정확한지 궁금하네요, 아니면 2의 보수를 사용하는 것으로 하죠?
자바에서 에뮬레이터를 프로그래밍하고 있기 때문에 바이트를 2의 보수로 해석하고 많은 지시 사항에서이를 보았습니다. 혼동.
여기에 대한 몇 가지 논의가 있습니다 : http://forums.nesdev.com/viewtopic.php?t = 102. 결론은 틀린 것 같다. 2의 보수가되어야합니다. –
프로세서에 대해 많이 알지는 못하지만 CPU가 2의 보수를 사용하여 이진수를 쉽게 추적 할 수 있다는 것을 알기 전에이 질문을했습니다. 잠깐 동안 나는 문서를 매우 숙련 된 사람들이 만들었다 고 생각하여 삭제하려고했는데, 틀린 것은 아니지만 운좋게도 나는 전체 CPU를 쓸모 없게 만들었습니다. 감사. 아이러니 컬하게도 나는 0x60 opcode 실수로 인해 중복 된 것을 발견했기 때문에 나는 여러 리소스를 참조로 사용하고있다. 최고가 되더라도 오류가 발생하기 쉽습니다. – ZimZim
훌륭한 프로젝트입니다. 행운을 빕니다. :) – alex