일부 프로세서는 고정 길이 명령어를 사용하며 명령어에 나타날 수있는 모든 비트 조합은 잘 정의 된 의미를 갖습니다. 일부는 고정 길이 명령을 사용하지만 일부 비트 조합에는 정의 된 의미가 없습니다 (제조업체는 이러한 조합을 실행하려고 시도 할 경우 어떤 일이 발생할지 지정하지 않습니다). 두 경우 모두 어떤 코드가 실행될지를 결정하는 것은 상당히 쉽습니다.
다른 많은 프로세서에서 코드 바이트 시퀀스의 의미는 구문 분석을 시작하는 위치에 따라 다릅니다. 6502 프로세서 바이트 시퀀스 (어드레스 0xFFC0 시작) 실행 어드레스 0xFFC3 시작된 경우
A9 00 2C A9 01 85 73 ...
가
FFC0: A9 00 -- LDA #$00
FFC2: 2C A9 01 -- BIT $01A9
FFC5: 85 73 -- STA $73
FFC6: ...
로 처리 될 수 있지만, 시퀀스
로 처리 될
FFC3: A9 01 -- LDA #$01
FFC5: 85 73 -- STA $73
FFC6: ...
주소 0xFFC3에있는 A9 01
이 "LDA # $ 01"명령인지 "BIT"명령에 대한 피연산자인지 확실하게 말할 수 없습니다. 실제로, 일부 실제 6502 코드에서 동일한 바이트가 두 가지 용도로 사용될 수 있습니다. BIT $ 01A9 명령어의 유일한 효과는 일반적으로 일부 플래그를 설정하는 것이므로 $ 2C 연산 코드는 다음 2 바이트를 건너 뜁니다. .
많은 프로세서에서 모든 가능한 바이트 코드에 대해 고유하게 정의 된 니모닉이 없습니다. 따라서 어셈블리 언어로 생성하는 유일한 방법은 명시 적으로 바이트 정의 지시문을 사용하는 것일 수 있습니다.예를 들어 6502에서 0x02, 0x12 및 0x22를 포함하여 특정 바이트 값을 실행하려고하면 다음 재설정 때까지 프로세서가 정지합니다. 이러한 동작은 유용하지 않으므로 정의 된 opcode가 할당되지 않습니다. 6502의 일부 파생물은 이러한 opcode를 실행할 때보다 유용한 연산을 수행하며, 특정 파생물을 대상으로하는 어셈블러는이를 생성 할 수있는 니모닉을가집니다. 그렇지 않으면 디스어셈블러의 공통적 인 동작은 0x02를 "??? (예 : "KIL")과 관련된 일반적인 의사 연산 코드를 가정합니다.
+1 이것은 아마도 OP가 요구하는 것입니다. – m0skit0