No que diz respeito 0xCCe 0xCD, em particular, estes são relíquias do Intel 8088 / 8086 conjunto de instruções do processador de volta na década de 1980. 0xCCé um caso especial do código de interrupção do software . A versão especial de byte único permite que um programa gere interrupção 3 .INT 0xCD0xCC
Embora os números de interrupção de software sejam, em princípio, arbitrários, INT 3era tradicionalmente usado para a função de quebra ou ponto de interrupção do depurador , uma convenção que permanece até hoje. Sempre que um depurador é iniciado, ele instala um manipulador de interrupção paraINT 3 que, quando esse código de operação for executado, o depurador seja acionado. Normalmente, ele pausará a programação em execução no momento e mostrará um prompt interativo.
Normalmente, o INTcódigo de operação x86 tem dois bytes: 0xCDseguido pelo número de interrupção desejado de 0 a 255. Agora, embora você poderia emitir 0xCD 0x03para INT 3, a Intel decidiu adicionar um especial version-- 0xCCsem byte adicional - porque um código de operação deve ser apenas um byte para funcionar como um 'byte de preenchimento' confiável para a memória não utilizada.
O objetivo aqui é permitir uma recuperação normal, se o processador saltar por engano na memória que não contém nenhuma instrução pretendida . As instruções de vários bytes não são adequadas para esse propósito, pois um salto incorreto pode ocorrer em qualquer deslocamento de bytes possível, onde teria que continuar com um fluxo de instruções formado adequadamente.
Obviamente, os opcodes de um byte funcionam trivialmente para isso, mas também pode haver exceções peculiares: por exemplo, considerando a sequência de preenchimento 0xCDCDCDCD(também mencionada nesta página), podemos ver que é razoavelmente confiável, pois não importa onde o ponteiro da instrução esteja ( exceto, talvez, o último byte preenchido), a CPU pode continuar executando uma instrução x86 de dois bytes válida CD CD, nesse caso, para gerar a interrupção 205 do software (0xCD).
Mais estranho ainda, embora CD CC CD CCseja 100% interpretável - dando uma INT 3ou outra INT 204- a sequência CC CD CC CDé menos confiável, apenas 75% como mostrado, mas geralmente 99,99% quando repetida como um preenchimento de memória de tamanho int.

Referência do Macro Assembler , 1987