Registriert seit: 16. Apr 2007
2.325 Beiträge
Turbo Delphi für Win32
|
Re: Disassembler: Länge der Instruction / Flags vorhanden?
3. Dez 2008, 19:00
Bist du dir sicher bezüglich 2E und 3E? Die Intel-Handbücher erwähnen nur folgende Formen für mehrbytige Opcodes:
0F - ein weiteres Byte
66/F2/F3 - 0F - ein weiteres Byte
0F - zwei weitere Bytes
66 - 0F - zwei weitere Bytes
Daher sind lediglich 66, F2 und F3 doppeldeutig, da sie als Flag-Präfix und als "mandatory prefix" für SIMD-Anweisungen auftauchen. Als Unterscheidungsmerkmal wird ausdrücklich das 0F-"escape opcode"-Byte genannt. F2 und F3 sind Repeat-Präfixe, die nur bei String-Anweisungen vorkommen, und 66 ist das Operandengröße-Präfix. Beides gibt bei SIMD-Anweisungen keinen Sinn.
Zu prüfen bleibt damit lediglich, wie viele Opcode-Bytes nach dem Escape Opcode Byte noch folgen. Hierfür solltest du dir eine Tabelle erstellen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
|