Forum: Programmieren allgemein
by Zacherl,
3. Dez 2008
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:...
Forum: Programmieren allgemein
by Zacherl,
3. Dez 2008
Perfekt. Eine Sache verwirrt noch .. es gibt ja ein paar wenige Befehle mit 3 Opcode Bytes. Das erste Byte ist dann entweder 2E oder 3E. Wie differenziere ich hier am besten zwischen Opcode Anfang und Prefix Byte?
Forum: Programmieren allgemein
by Zacherl,
2. Dez 2008
Oki danke dir! Hab das ganze jetzt soweit fertig, dass bis zum ModR/M Byte geparst wird. Welche Werte sagen mir, dass ein SIB Byte folgen muss? Aus der Opcode Map war dies für mich nicht ersichtlich ..
Forum: Programmieren allgemein
by Zacherl,
2. Dez 2008
Okay gut angenommen ich fange beim Anfang einer Instruction an. Nun ist der Opcode 3E und die Instruction hat keine Prefixe. Ich gehe hin, überspringe 3E brav, weil ich denke, dass es eine Prefix sein muss und lande bei den Suffixen oder der nächsten Instruction .. Was kann ich da machen?
Forum: Programmieren allgemein
by Zacherl,
2. Dez 2008
Soweit verstanden :) Kann es da keine Probleme geben wenn ich den Disassembler z.b. zwischen zwei Instructionen einsetzen lasse und der Opcode bei dem ich beginne zufällig gleich einem der Präfix Bytes ist?
Forum: Programmieren allgemein
by Zacherl,
2. Dez 2008
Hey,
ich versuche einen simplen Disassembler zu schreiben und habe hierfür nun schon eine Opcode Map angelegt. Nun ist mein Problem den Anfang einer Instruction zu finden. Anhand der Opcode Map kann ich zwar die Länge der Parameter, etc ermitteln, aber hiervor benötige ich erstmal den Opcode. Da vor dem Opcode aber noch die 1-4 Flagbytes stehen können, weiß ich nicht wo ich ansetzen soll, um...