관하여 0xCC
및 0xCD
특히, 이들의 유물이다 인텔 8088 / 8086 1980 프로세서 명령어 세트의 뒷면. 소프트웨어 인터럽트 opcode 0xCC
의 특별한 경우입니다 . 특수한 1 바이트 버전 에서는 프로그램이 인터럽트 3 을 생성 할 수 있습니다 .INT
0xCD
0xCC
원칙적으로 소프트웨어 인터럽트 번호는 임의적이지만 디버거 브레이크 또는 브레이크 포인트 기능 INT 3
에는 전통적으로 사용 되었지만 오늘날까지 유지되고 있습니다. 디버거가 시작될 때마다 해당 opcode가 실행될 때 디버거가 트리거되도록 인터럽트 처리기를 설치합니다 . 일반적으로 현재 실행중인 프로그래밍을 일시 중지하고 대화식 프롬프트를 표시합니다.INT 3
일반적으로 x86 INT
opcode는 2 바이트이며 0xCD
그 뒤에 원하는 인터럽트 번호는 0-255입니다. 이제는 문제 0xCD 0x03
를 해결할 수 있지만 INT 3
인텔은 0xCC
사용하지 않는 메모리의 안정적인 '채우기 바이트'로 작동하기 위해 opcode가 1 바이트 만되기 때문에 추가 바이트없이 특수 버전을 추가하기로 결정했습니다 .
여기서 요점 은 프로세서가 의도 한 명령이 포함되지 않은 메모리로 실수로 점프하는 경우 정상적인 복구를 가능하게 하는 것 입니다. 멀티 바이트 명령어는 잘못된 점프가 올바르게 구성된 명령어 스트림을 계속해야하는 가능한 바이트 오프셋에 도달 할 수 있으므로이 목적에 적합하지 않습니다.
기발한 예외를 분명히 1 바이트 연산 코드는이를 위해 하찮게 일뿐만 아니라이있을 수있다 : 예를 들어, 채우기 순서 고려 0xCDCDCDCD
(이 페이지에 언급), 우리가 어디에 상관없이 이후 상당히 신뢰성이 있다고 볼 수 있습니다 명령 포인터의 땅 ( 제외시켰다 아마도 CPU는 올바른 실행을 재개 할 수) 마지막 충전 바이트 2 바이트 x86 명령어를 CD CD
205 (0XCD) 소프트웨어 인터럽트를 생성하는데,이 경우에는.
Weirder는 여전히 CD CC CD CC
100 % 해석 가능합니다.- INT 3
또는 INT 204
-시퀀스 CC CD CC CD
를 신뢰할 수없고, 표시된 것처럼 75 %에 불과하지만 int 크기의 메모리 필러로 반복하면 일반적으로 99.99 %입니다.
1987 년 매크로 어셈블러 참조