In Jasmin-Assemblersprache gibt es die Möglichkeit einen Kommentar mit einem
Semikolon ";" einzuleiten. Der darauffolgende Text wird dann bis zum Ende der
Zeile als Kommentar gewertet. Im Jasmin-Quelltext wird der Strichpunkt auch
bei Feld- und Methodendeskriptoren verwendet. In Listing 5.1
wird z.B. der Methodendeskriptor Kommentar "HelloWorld.j" ; HelloWorld.j .class public HelloWorld ; HelloWorld.j .class public HelloWorld ;HelloWorld.j Keine Kommentare "HelloWorld.j" bzw. ")V" Ljava/io/PrintStream; HelloWorld.j java/io/PrintStream/println(Ljava/lang/String;)V Innerhalb eines Jasmin-Quelltextes können Labels verwendet werden, um
Sprungziele zu markieren. Labels können im Quelltext entweder eine komplette
Zeile für sich beanspruchen oder können direkt vor einer JVM-Instruktion stehen.
Als Beispiel für die Verwendung von Labels soll die folgende int j = 0; for (int i = 0; i < 10; i++) { j = j + 2; } Die folgende Aufstellung zeigt auf der linken Seite die Realisierung der
Schleife auf Assemblerebene mit konventionellen Labels. Auf der rechten Seite
werden pc-Labels verwendet, wobei die Abkürzung pc für program counter
steht. Die Mit konventionellen Labels Mit pc-Labels iconst_0 0: iconst_0 istore_0 1: istore_0 iconst_0 2: iconst_0 istore_1 3: istore_1 Label1: iload_1 4: iload_1 bipush 10 5: bipush 10 if_icmpge Label2 7: if_icmpge 20 iload_0 10: iload_0 iconst_2 11: iconst_2 iadd 12: iadd istore_0 13: istore_0 iinc 1 1 14: iinc 1 1 goto Label1 17: goto 4 Label2: ... 20: ... Prinzipiell ist es nicht erforderlich, dass ein pc-Label auch mit dem
tatsächlichen Programmzähler übereinstimmt. Es wird lediglich gefordert, dass
ein pc-Label ein ganze Zahl repräsentiert (inklusive negativer Zahlen). Die
Zahlenwerte müssen auch keiner bestimmten Ordnung unterliegen. Es bietet sich
aber an, die pc-Labels entsprechend des tatsächlichen Programmzählers bzw. dem
Index im code-Array zu verwenden. Um den Wert des Indexes im code-Array zu
verdeutlichen, kann die Bytecodierung der code-Array: 03 3b 03 3c 1b 10 0a a2 00 0d 1a 05 60 3b 84 01 01 a7 ff f3 b2 00 02 1a b6 00 03 b1 Operationscode Operandenbytes Instruktion Index (pc) 03 iconst_0 0 3b istore_0 1 03 iconst_0 2 3c istore_1 3 1b iload_1 4 10 0a bipush 10 5 a2 00 0d if_icmpge 20 7 1a iload_0 10 ... Ein Label muss mit einem Doppelpunkt abgeschlossen werden. Der Name eines
konventionellen Labels darf nicht mit einer Zahl beginnen und es dürfen auch
nicht die folgenden Zeichen enthalten sein: =, :, ., ", - . Die Namen von
Direktiven und die Bezeichnungen von Instruktionen der virtuellen Java-Maschine
(Mnemoniks) können ebenfalls nicht verwendet werden. Beispiele für gültige
konventionelle Labels sind: |
|