Die RTA-Entwicklungsumgebung kennenlernen

Wir programmieren eine Endlosschleife ...

Dieses Tutorial demonstriert den Umgang mit der Entwicklungs- und Laufzeitumgebung Vimage/RTA. Ziel ist es, etwas „Vimage/RTA-Stallgeruch“ aufzunehmen - und das an Hand einer der gefährlichsten Geißeln der Programmierkunst: der Endlosschleife. Für Vimage kein Problem. Eine „richtige Datenverarbeitung“ findet in diesem Tutorial allerdings noch nicht statt.

Das Tutorial gilt grundsätzlich auch für die Stand-alone-RTA-Entwicklungsumgebeung rta.exe.

Vimage benutzt RTA-Programme (RT-Assemblerprogramme) in verschiedenen Laufzeitumgebungen: den Projection engines im Geometriemenü und der Radio engine des Radiometriemenüs. Zum andern muss aber ein RTA-Programm aber erst einmal geschrieben werden. Dafür gibt es eine Entwicklungsumgebung, den RT-Debugger.

Der RT-Debugger

Der RT-Debugger wird per Extras/RT-Debugger aufgerufen:

Unser Quellprogrammtext lautet:

          _name   Endlosschleife                ; Das ist nur der Programmname
          pause   Achtung~Endlosschleife        ; Ausgabe einer Anfangsmeldung
  a:                                            ; Markendefinition Marke a
          inc     b                             ; Eine Variable b um 1 erhöhen
          proof   b                             ; b zur Fortschrittskontrolle kurz ausgeben
          jump    a                             ; Zur Marke a springen
          _end                                  ; Kann man auch weglassen
  

Das Programm trägt den Namen „Endlosschleife“. Eine Ausgabebefehl pause zeigt eine Mitteilung „Achtung Endlosschleife“ an. Nach einer Marke „a“ erhöht der der Befehl inc den Wert einer Variablen „b“ um Eins, ein proof-Befehl gibt dieses „b“ als Fortschrittskontrolle kurz aus. Ein jump-Befehl springt zur Marke „a“. Daraufhin geht es wieder mit dem inc weiter. Endlos.

Das Programm bitte aus dem Seitentext kopieren und in das Quelltextfenster des RT-Debuggers einfügen ...

In der Entwicklungsumgebung besteht bereits die Möglichkeit das Programm zu starten, schrittweise abzuarbeiten und zu debuggen. (Dann bitte - denn es ist ja eine Endlosschleife - per „Haltsignal“ oder „Abbruchsignal“ abbrechen.) Da unser Programm ist aber bereits fehlerfrei ist, speichern wir es lediglich unter dem Dateinamen rt_demo_achtung_endlosschleife.rta ab:

Das Debuggerfenster wird per Datei/Exit verlassen.


Das Programm in der Laufzeitumgebung

Wir rufen als Laufzeitumgebung die im Menü Radiometrie befindliche Radio engine:

Die Radio engine fragt nun nach dem Namen des RT-Assemblerprogrammes:

Hier wieder rt_demo_achtung_endlosschleife.rta wählen. Das Programm wird sofort gestartet. Der erste Befehl, den man bemerkt, ist der pause-Befehl. Dieser gibt die Mitteilung „Achtung Endlosschleife“ aus:

Man sieht: Die Tilde „~“ im Quellprogramm ist der Leerzeichen-Stellvertreter. Dank dieses Dialogfensters erkennen wir, dass das Programm „auf der Maschine“ läuft.

Anschließend passiert nun nicht mehr viel. Er ist weitergelaufen und hängt nun — in der Endlosschleife    — — —

Der grüne Pfeil zeigt die Variable „b“ an, die hochgezählt wird. 75333 Durchläufe    — — —

 207506    — — —

 779799    — — —

 1222333    — — —

Was nun?    — — —

Er kann bis etwa 1014 hochinkrementieren. Das wird etwa 30 Jahre dauern    — — —    also ungefähr bis in das Jahr 2060    — — —

Ja    — — —    was nun?    — — —    — — —    — — —


Der Z-Interrupt

Die Lösung heißt: Bitte <Strg/Z> oder <Ctrl/Z> eingeben. (Anmerkung: Bei der Stand-alone-RTA-Entwicklungsumgebung rta.exe gibt es keinen Z-Interrupt; hier einfach die Halt-Taste betätigen.)

Bitte „Ja“ klicken. Nun wird in die „RT-Maschine“ verzweigt.

Die meldet sich zunächst mit einer Sicherheitsabfrage. Die Frage „Endlosschleife abbrechen?“ lässt die Maschine übrigens klüger erscheinen, als sie ist. Die Maschine weiß keinesfalls, dass sie in einer Endlosschleife steckt. Turingmaschinen können so etwas gar nicht so einfach rauskriegen. „Endlosschleife“ wurde lediglich aus dem Programmnamen kopiert, d. h. also aus der _name-Anweisung im Quellprogramm.

Mit „Ja“ wird er abbrechen. So werden wir herauskommen. „Anhalten“ ist aber auch keine schlechte Variante. Diese Taste setzt das Haltsignal. Ein Interrupt wird erzeugt und die Maschine „geht in den Halt“.

Der gerade auf der Maschine laufende Befehl wird unterbrochen und es erscheint die „RT-Maschinenkonsole“:

Nun können wir ganz in Ruhe nachsehen, was er dort gerade macht. Adresse für Adresse, Befehl für Befehl. Am Instruction Counter IC erkennt man, dass er gerade den 3969001. Befehl ab Programmstart abgearbeitet hat. Der Befehlszähler (Instruction Pointer IP) der Maschine steht auf 3, dort steht der proof dessen 1. Operand Adresse 38 hat und damit auf Wert 1323000 zeigt. Es ist also gerade „b = 1323000“ im Fortschrittskontrollfenster von Vimage ausgegeben worden.

Man kann sich nun 'Schrittweise' Einzelbefehl für Einzelbefehl weiterklicken und sehen, was jeder Befehl macht.

In der Symboltabelle, die man per „Symbole“-Click erreicht (hier etwas nach unten gescrollt), stehen alle Symbole:

Auf Adresse 38 steht tatsächlich Symbol b mit Wert 1323000. Symbol a ist die Marke „a“ mit dem Wert 2. Was dies bedeutet, zeigt ein Click auf „Code“:

Genau das ist der interne Code, in den unser Quellprogramm übersetzt worden ist. Der Wert der Marke gibt die Codezeile an, auf der (genau: über der - denn die Markendefiontion erzeugt keinen Code) die Marke steht. Klar, wenn man nach a springt, springt man „auf den inc“, wie das Quellprogramm zeigt:

  a:                                            ; Markendefinition Marke a
          inc     b                             ; Eine Variable b um 1 erhöhen
  

Bitte ruhig etwas in der Maschinenkonsole herumprobieren.

Mit „Fortsetzen“ kann man das Programm weiterlaufen lassen. (Achtung, wenn er nicht weiterläuft, dann kann das daran liegen, dass Modus 'Schrittweise' eingestellt wurde. Dann 'Ohne Halt' einstellen.)


Programm beenden

Der Abbruch sollte nun kein Problem mehr sein: <Strg/Z> oder <Ctrl/Z>:

Bitte „Ja“ klicken. Und dann:

Nochmal „Ja“. Dann bricht er ab.

So einfach ist das.


-TU-71-00

Zum Seitenanfang