|
.Lehre.Semesterübersicht |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]()
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Befehlsreferenz Jasmin-CodeDie folgende Kurzreferenz von Jasminbefehlen ist auf zwei Arten beschränkt: zum einen enthält sie nur die für das Praktikum relevanten Befehle und zum anderen werden von diesen auch nur die benötigten Funktionen beschrieben. Wer das Bedürfnis nach einer genaueren Beschreibung des einen oder anderen Befehls hat, wird in dem Buch The Java Virtual Machine Specification fündig, dass auf der angegebenen Webseite vollständig online zur Verfügung steht. Die alphabetisch geordnete Liste aller JVM-Befehle (also auch der nicht von uns benötigten) befindet sich dabei in Kapitel 6. Es ist jedoch zu beachten, dass es zwar zu jedem Jasmin-Befehl einen gleichnamigen, äquivalenten JVM-Befehl gibt, sich aber die Syntax manchmal leicht unterscheidet (insbesondere gibt es nur in Jasmin symbolische Namen). KurzreferenzIm Praktikum werden die folgenden Befehle benötigt (die Zahlen hinter den Befehlen geben die Veränderung der Stackgröße an):
Sonderfall printfMit den Befehlen in der obigen Tabelle kann man bis auf eine Ausnahme alle in C0 erlaubten Konstrukte umsetzen. Die Ausnahme lautet printf. In Jasmin generieren wir dazu einen Aufruf von System.out.println. Die Syntax sieht folgendermaßen aus: getstatic java/lang/System/out Ljava/io/PrintStream; ... (hier steht der Code, der das auszugebende auf den Stack legt) invokevirtual java/io/PrintStream/println(x)V Dabei muss an der Stelle des x der Typ des auszugebenden Datums stehen (I, F oder Z). Ein einfaches Programm, dass das Ergebnis der Addition 1+2 ausgibt, sieht also folgendermaßen aus: getstatic java/lang/System/out Ljava/io/PrintStream; ldc 1 ldc 2 iadd invokevirtual java/io/PrintStream/println(I)V Last update: Wednesday, June 27, 2007
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||