AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Disassembler: Länge der Instruction / Flags vorhanden?
Thema durchsuchen
Ansicht
Themen-Optionen

Disassembler: Länge der Instruction / Flags vorhanden?

Ein Thema von Zacherl · begonnen am 2. Dez 2008 · letzter Beitrag vom 3. Dez 2008
Antwort Antwort
Seite 2 von 2     12   
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Disassembler: Länge der Instruction / Flags vorhanden?

  Alt 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."
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#12

Re: Disassembler: Länge der Instruction / Flags vorhanden?

  Alt 3. Dez 2008, 19:34
Ja meinte F2 und F3, oki also es klappt jetzt, dass ich 1-Byte Opcodes erkenne, 2-Byte Opcodes mit 0F am Anfang und 3-Byte Opcodes mit 66/F2/F3-F0-XX. Fehlt noch 66-0F-XX-XX, die ich dann per Tabelle prüfen werde. Bei F2, etc prüfe ich einfach, ob direkt danach 0F kommt.

Gibts die Intel Dokumentation für die Instructions irgendwo im PDF Format oder so? Habe das hier gefunden: http://gec.di.uminho.pt/Discip/Lesi/...4ISAformat.pdf Soweit ganz nett erklärt, wobei ich bei der 32 Bit Tabelle fürs ModRM Byte nicht weiterkomme.

Code:
add bl, [456]
add ebx, [456]
Erzeugen beispielsweise das selbe ModRM Byte (Mod 0, Reg 3, RM 5). Jetzt weiß ich nicht, welches Register effektiv verwendet wurde.

EDIT: Shiat Nur verguckt .. Einmal ist Opcode 3 und einmal 2. Aber die Referenz wäre trotzdem cool
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Disassembler: Länge der Instruction / Flags vorhanden?

  Alt 3. Dez 2008, 19:55
Zitat von Zacherl:
Gibts die Intel Dokumentation für die Instructions irgendwo im PDF Format oder so?
Ich habe mich schon gefragt, wann du dich danach erkundigen würdest. Hier wirst du fündig. Die anderen Handbücher wie z.B. der System Programming Guide sind als Lektüre übrigens auch recht interessant.

Das die beiden Anweisungen das selbe ModR/M-Byte haben, ist klar. Es wird nur zwischen verschiedenen Register-Kategorien unterschieden. ebx, bx und bl fallen beispielsweise in eine Kategorie. Die Operanden-Größe kennst du aus dem Opcode (dort kannst du zwischen 8 und 16/32 Bit unterscheiden), den Einstellungen des Code-Segments (16 oder 32 Bit, in Windows immer 32 Bit solange du keine speziellen Vorkehrungen für 16-Bit-Programme unternimmst) und dem Override Prefix, welches die Einstellung des Code-Segments umkehrt.
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."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz