In Bezug 0xCCund 0xCDinsbesondere sind diese Relikte aus der Intel 8088 / 8086 - Prozessor - Befehlssatz zurück in den 1980er Jahren. 0xCCist ein Sonderfall des Software-Interrupt- Opcodes . Die spezielle Einzelbyte-Version ermöglicht es einem Programm, Interrupt 3 zu generieren .INT 0xCD0xCC
Obwohl Software-Interrupt-Nummern im Prinzip willkürlich sind, INT 3wurde sie traditionell für die Debugger-Break- oder Breakpoint- Funktion verwendet, eine Konvention, die bis heute besteht. Jedes Mal, wenn ein Debugger gestartet wird, installiert er einen Interrupt-Handler INT 3, sodass der Debugger ausgelöst wird, wenn dieser Opcode ausgeführt wird. In der Regel wird die aktuell ausgeführte Programmierung angehalten und eine interaktive Eingabeaufforderung angezeigt.
Normalerweise besteht der x86- INTOpcode aus zwei Bytes: 0xCDgefolgt von der gewünschten Interrupt-Nummer von 0-255. Nun , obwohl Sie könnten ausgeben 0xCD 0x03für INT 3Intel ein spezielles version-- hinzuzufügen entschieden 0xCCohne zusätzliches Byte - weil ein Opcode nur ein Byte, um zu funktionieren als zuverlässiger ‚Füllbytezeiger‘ für nicht genutzte Speicher sein muss.
Hier geht es darum, eine ordnungsgemäße Wiederherstellung zu ermöglichen, wenn der Prozessor versehentlich in einen Speicher springt, der keine beabsichtigten Anweisungen enthält . Mehrbyte-Befehle sind für diesen Zweck nicht geeignet, da ein fehlerhafter Sprung bei jedem möglichen Byte-Versatz landen könnte, wo er mit einem ordnungsgemäß gebildeten Befehlsstrom fortgesetzt werden müsste.
Offensichtlich funktionieren Ein-Byte-Opcodes hierfür trivial, aber es kann auch eigenartige Ausnahmen geben: Wenn 0xCDCDCDCDwir beispielsweise die Füllsequenz (ebenfalls auf dieser Seite erwähnt) betrachten, können wir sehen, dass sie ziemlich zuverlässig ist, da unabhängig davon, wo der Befehlszeiger landet ( außer vielleicht dem zuletzt gefüllten Byte) kann die CPU die Ausführung eines gültigen Zwei-Byte- x86-Befehls fortsetzen CD CD, in diesem Fall zum Erzeugen des Software-Interrupts 205 (0xCD).
Noch seltsamer, während die Sequenz zu CD CC CD CC100% interpretierbar ist - entweder INT 3oder INT 204-, CC CD CC CDist die Sequenz weniger zuverlässig, nur 75% wie gezeigt, aber im Allgemeinen 99,99%, wenn sie als Speicherfüller mit int-Größe wiederholt wird.

Macro Assembler Reference , 1987