Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden
Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden
Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Diplomarbeit</strong>: Modulares System Programmierung der Knotenpunkte<br />
Das Beispiel aus dem vorigen Abschnitt wird also von der Maschine so gelesen:<br />
03 00 - Versionsnummer (3)<br />
01 00 - Anzahl Prozeduren (1)<br />
1B 22 00 00 00 08 00 - Prozedur 0 mit 34 Byte Codelänge <strong>und</strong> 8 Byte Datenlänge<br />
01 00 00 - puValVrMain 0 (a)<br />
06 01 00 - puConst 1 (0)<br />
13 - cmpGT<br />
1E - dup<br />
19 0F 00 - jnot<br />
04 04 00 - puAdrVrMain 4 (x)<br />
06 02 00 - puConst 2 (3)<br />
06 00 00 - puConst 0 (0)<br />
0E - OpMult<br />
01 00 00 - puValVrMain 0 (a)<br />
0C - OpAdd<br />
07 - storeVal<br />
17 - retProc<br />
03 00 - Konstante 0 (3)<br />
00 00 - Konstante 1 (0)<br />
02 00 - Konstante 2 (2)<br />
Abbildung 6.8 - Interpretierte Codedatei<br />
Für jeden Befehl, den die Maschine ausführen soll, existiert eine Funktion, die ihn realisiert <strong>und</strong> auf<br />
dem Kellerspeicher <strong>und</strong> mit dem Speicher arbeitet. Identisch arbeitende Funktionen (z.B. die<br />
Vergleichsoperatoren) wurden dabei weitestgehend zusammengefasst.<br />
while (!Ende)<br />
{<br />
switch (*pC++)<br />
{<br />
case puValVrLocl:FcpuValVrLocl(); break;<br />
case puValVrMain:FcpuValVrMain(); break;<br />
...<br />
}<br />
}<br />
/*--- Push Value Variable local ---*/<br />
int FcpuValVrLocl(void)<br />
{<br />
short Displ,Val;<br />
Displ=getShortParameter(pC);pC+=2;<br />
Val=rd2(pInfProc[iCProc].pVar+Displ);<br />
push2(Val);<br />
return OK;<br />
}<br />
...<br />
Abbildung 6.9 - Beispiele <strong>für</strong> Funktionen der Virtuellen Maschine<br />
26.07.2004 Seite 47 von 85