Forum: Programmieren allgemein
by Apollonius,
1. Dez 2008
Die wesentliche Arbeit nimmt dir diese Engine nicht ab. Du brauchst immer noch eine Tabelle aller Opcodes mit ihren Operanden und deren Kodierung.
Forum: Programmieren allgemein
by Apollonius,
1. Dez 2008
Du musst zunächst alle Präfixe prüfen (lock, Segment Override, Branch Hint...). Dann kommst du an den eigentlichen Opcode. Dafür brauchst du eine globale Tabelle, die dir zum einen sagt, ob noch ein Teil des Opcodes fehlt, und zum anderen, welche Operanden erwartet werden. Dazu gehören in erster Linie Reg, Reg/Mem und Imm sowie die Länge (8 - 32 Bit). Falls es Reg/Mem-Operanden gibt, gibt es in...
Forum: Programmieren allgemein
by Apollonius,
1. Dez 2008
Du musst zwischen Byte- und DWord-Displacements unterscheiden. Wenn es sich um ein Byte-Displacement handelt, musst du negative Werte auch negativ darstellen. Beispielsweise ist add , edx objektiv falsch, denn die CPU interpretiert Byte-Displacements immer als vorzeichenbehaftet, also .
Bei DWord-Displacements ist diese Eindeutigkeit nicht gegeben, denn es ist nunmal egal, ob du eine Zahl...