Im ersten Schritt wollen wir Zuweisungen von Werten an Variablen untersuchen. Hier wie auch bei den folgenden Untersuchungen verwenden wir einfache Delphi-Programme. Die eigentlichen Programmroutine legen wir auf einen Butten "Start" zur Ausführung. In der Klickprozedur dieses Buttons deklarieren wir die nötigen Variablen und hinterlegen den Programmcode.
Hinweis: Damit der Compiler die Variablen überhaupt anlegt, müssen diese in einer Anweisung benutzt werden. Aus diesem Grund fügen wir eine Ausgabeanweisung für die Variable(n) ein.
Zum Studieren des Codes benutzen wir das CPU-Fenster, das geöffnet werden kann, wenn das Program im Debugmodus läuft. Daher setzen wir in der Zeile der ersten zu untersuchenden Anweisung einen Haltepunkt. Hierzu muss in den Randbereich links vor der Zeile geklickt werden.
Das folgende Bild zeigt die Klickprozedur für eine Zuweisung einer Konstanten (hier 20) an eine Variable (hier a) mit gesetztem Haltepunkt.
Nach dem Starten hält das Programm am Haltepunkt an und wir öffnen das CPU-Fenster (Ansicht/Debugfenster/CPU bzw. Strg-Alt-C):
Der Bereich links oben zeigt den aktuellen Programmausschnitt im Hauptspeicher (Adresse hexadezimalen Maschinencode und die Übersetzung in Assemblercode),
unten links wird der Maschinencode fortlaufen hexadezimal angezeigt (Adresse in 8-er Schritten 8 Byte Code).
Im rechten Bereich werden die Prozessorregister EAX (= extendedAX) bis EFL, je 32 Bit (= 4 Byte groß) sowie CS bis GS (je 2 Byte groß) dargestellt.
In der rechten Spalte finden wir so genannte Flags (CF bis ID).
Der Bereich unten rechts zeigt einen Ausschnitt des Hauptspeichers im Datenbereich (Stack) (Adresse Inhalt (4 Byte groß)).
Blau hinterlegt wird die aktuelle Position im Programmcode dargestellt. Wir erkennen die auszuführende Pascalanweisung a := 20; der grüne Pfeil markiert den zugehörigen Maschinencode, der als nächstes ausgeführt wird.
Assemblercode: mov esi,$00000014
Bedeutung: Bewege nach (move) Register ESI die HexZahl ($) 00000014 = 20dez.
Maschinencode: BE14000000. BE ist der Code für mov esi, die 14 stellt die Zahlkonstante dar.
Der Assemblercode ermöglicht uns eine leichtere Lesbarkeit. Man müsste sonst z.B. die Bedeutung des Codes BE wissen.
Führt man nun über den Einzelschrittmodus in Delphi (F7) den Programmschritt aus, so erhält man folgendes CPU-Fenster:
Links wurde die nächste Anweisung ausgewählt.
Interessant ist aber der Registerbereich. Das Register ESI enthält nun tatsächlich den Wert 00000014. (Rot dargestellt)
Die folgenden Anweisungen betreffen nun die Aufbereitung und Ausgabe des Ergebnisses über das Label. Diesen Code zu verfolgen würde hier zu weit führen.
Weitere Beispiele untersuchen wir in Übungen:
[Index] [Einführung] [Logische Schaltelemente - CPU]
Autor: Jürgen Dehmer
Letzte Änderung: 28.02.2004