Что касается 0xCCи , 0xCDв частности, эти реликвии от Intel 8088 / 8086 набор команд процессора еще в 1980 - х годах. 0xCCэто особый случай программного кода прерывания . Специальная однобайтовая версия позволяет программе генерировать прерывание 3 .INT 0xCD0xCC
Хотя номера программных прерываний, в принципе, произвольны, INT 3традиционно использовались для функции прерывания отладчика или функции точки останова , соглашение, которое сохраняется и по сей день. Каждый раз, когда запускается отладчик, он устанавливает обработчик прерываний для того INT 3, чтобы при выполнении этого кода операции был запущен отладчик. Обычно это приостанавливает текущее программирование и отображает интерактивное приглашение.
Обычно INTкод операции x86 составляет два байта: 0xCDза ним следует номер прерывания от 0 до 255. Теперь , хотя вы могли бы выпустить 0xCD 0x03на INT 3, Intel решила добавить специальный version-- 0xCCбез дополнительного байта - потому что опкод должен быть только один байт, чтобы функционировать в качестве надежного «заполнения байта» для неиспользуемой памяти.
Суть здесь в том, чтобы обеспечить постепенное восстановление, если процессор ошибочно переходит в память, которая не содержит каких-либо предполагаемых инструкций . Многобайтовые инструкции не подходят для этой цели, так как ошибочный переход может привести к любому возможному смещению байта, где он должен был бы продолжаться с правильно сформированным потоком команд.
Очевидно, что однобайтовые коды операций работают для этого тривиально, но могут быть и причудливые исключения: например, рассматривая последовательность заполнения 0xCDCDCDCD(также упомянутую на этой странице), мы можем видеть, что она достаточно надежна, поскольку независимо от того, где находится указатель инструкции ( кроме, возможно, последнего заполненного байта), CPU может возобновить выполнение действительной двухбайтовой инструкции x86 CD CD, в этом случае для генерации программного прерывания 205 (0xCD).
Что еще более странно, в то время CD CC CD CCкак 100% интерпретируемо - дает либо INT 3или INT 204- последовательность CC CD CC CDменее надежна, только 75%, как показано, но обычно 99,99%, когда повторяется как заполнитель памяти целого размера.

Справочник по макросам , 1987