Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Assembler und Disassambler simulieren (https://www.delphipraxis.net/142999-assembler-und-disassambler-simulieren.html)

Ginko 7. Nov 2009 16:56


Assembler und Disassambler simulieren
 
Hallo kennt jemand eine Seite wo die Vorgänge beschrieben werden oder weiß jemand wie es normalerweise gemacht wird.
Ich wollte so etwas in Delphi umsetzen...
Also um genauer zu werden, wie der Assembler aus dem String den man eingibt zB "mvi a,55h" einen Opcode erstellt.
Wird da zuerst die Hexzahl entfernt und dann mit einer riesen case Anweisung geschaut welcher Opcode zu "mvi a" gehört (in dem Fall wäre es ja "E3")?
Und beim disassemblieren müsste ja irgendwie erkannt werden ob es sich um einen Befehl oder den zugehörigen Operanden handelt, der gerade gelesen wird. Also das "E3" der Befehl "mvi a" ist und hintendran der Operand folgt.
Das wäre ja nur möglich wenn man vorne anfängt und Schritt für Schritt durchgeht, da die Befehle ja immer eine bestimmte größe haben und man dann wüsste, dass auf "E3" ein Operand in dem Fall "55h" folgt und dann der nächste Befehl kommem muss. Oder täusche ich mich da.... :gruebel:

Delphianer 7. Nov 2009 18:25

Re: Assembler und Disassambler simulieren
 
Hi,

ich würde eine Datenstruktur aufbauen, in der alle Befehle beschrieben sind. So in der Art: besteht aus x Bytes, ist absolute/relative Adresse, ist Flag ... Und dann brauchst Du einen halbwegs intelligenten Parser.

Beim Disassemblieren musst Du die Startadresse kennen, da schon ein Byte Versatz totalen Müll produziert. Und Du musst natürlich Sprünge auswerten, weil unter Umständen irgendwelche Bytes im Speicher stehen können, an denen der Prozessor nie vorbeikommt. Wenn Du die übersetzt, hast Du wieder Müll.

Viele Grüße,

Lutz

Ginko 7. Nov 2009 18:34

Re: Assembler und Disassambler simulieren
 
Danke erstmal, so in der Art habe ich mir das auch gedacht.
Meinst du mit dem Parser einen Programmteil, welcher die Eingabe "mvi a" zB in einen Zahlencode umwandelt und mit diesem in in der Datenstruktur nach dem entsprechenden Befehl sucht?

Delphianer 8. Nov 2009 08:26

Re: Assembler und Disassambler simulieren
 
Hi,

Zahlencode nicht unbedingt. Aber ein Parser, der die Befehle so weit versteht, dass er in der anfangs erwähnten Datenstruktur die richtigen Befehle heraussucht.

Viele Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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