Mengenai 0xCC
dan 0xCD
khususnya, ini adalah peninggalan dari Intel 8088 / 8086 instruksi prosesor set kembali pada 1980-an. 0xCC
adalah kasus khusus dari opcode interupsi perangkat lunak . Versi byte tunggal khusus memungkinkan program untuk menghasilkan interrupt 3 .INT
0xCD
0xCC
Meskipun angka interupsi perangkat lunak, pada prinsipnya, arbitrer, INT 3
secara tradisional digunakan untuk fungsi debugger break atau breakpoint , sebuah konvensi yang masih ada hingga hari ini. Setiap kali debugger diluncurkan, ia menginstal interrupt handler untuk INT 3
sedemikian rupa sehingga ketika opcode dijalankan, debugger akan terpicu. Biasanya itu akan menghentikan sementara pemrograman yang sedang berjalan dan menampilkan prompt interaktif.
Biasanya, INT
opcode x86 adalah dua byte: 0xCD
diikuti oleh angka interupsi yang diinginkan dari 0-255. Sekarang meskipun Anda bisa mengeluarkan 0xCD 0x03
untuk INT 3
, Intel memutuskan untuk menambahkan khusus sebuah version-- 0xCC
tanpa byte tambahan - karena opcode harus hanya satu byte untuk fungsi sebagai 'mengisi byte' yang handal untuk memori yang tidak terpakai.
Intinya di sini adalah untuk memungkinkan pemulihan yang anggun jika prosesor keliru melompat ke memori yang tidak mengandung instruksi yang dimaksud . Instruksi multi-byte tidak cocok untuk tujuan ini karena lompatan yang salah dapat mendarat pada byte byte yang mungkin di mana ia harus melanjutkan dengan aliran instruksi yang dibentuk dengan benar.
Jelas, satu-byte opcodes bekerja sepele untuk ini, tetapi bisa juga ada pengecualian unik: misalnya, mengingat urutan pengisian 0xCDCDCDCD
(juga disebutkan pada halaman ini), kita dapat melihat bahwa itu cukup dapat diandalkan karena di mana pun penunjuk instruksi mendarat ( kecuali mungkin byte terisi terakhir), CPU dapat melanjutkan mengeksekusi instruksi dua-byte x86 yang valid CD CD
, dalam hal ini untuk menghasilkan interupsi perangkat lunak 205 (0xCD).
Lebih aneh lagi, sedangkan CD CC CD CC
100% dapat ditafsirkan - memberikan salah satu INT 3
atau INT 204
- urutan CC CD CC CD
kurang dapat diandalkan, hanya 75% seperti yang ditunjukkan, tetapi umumnya 99,99% ketika diulang sebagai pengisi memori ukuran int.
Referensi Makro Assembler , 1987