javaseiten.de   |   Version 0.6
 

5.2. Einführendes Beispiel: HelloWorld.j

Ausgehend vom folgenden kurzen Java-Quelltext, der zu der Textausgabe "Hello World!" führt, soll der zugehörige Jasmin-Quelltext angegeben und erläutert werden.

/* HelloWorld.java */

public class HelloWorld {

  public static void main(String[] args) {
    System.out.println("Hello World!");    
  }
}

Das Jasmin-Listing enthält zunächst einen Kommentar und anschließend die Direktive .bytecode, mit der die Version des Klassendateiformats festgelegt wird, das durch den Assembler Jasmin erzeugt wird. Aus den beiden darauffolgenden Direktiven .class und .super, wird der Name der Klasse und deren Superklasse bestimmt. Die Superklasse im Beispiel ist definitionsgemäß die Wurzelklasse der Klassenhierarchie Object, die im Gegensatz zum Java-Quelltext innerhalb des Assemblerprogramms explizit angegeben werden muss. Mit der Direktive .method wird der Beginn einer Methodendefinition angekündigt und die Angabe .end method schließt die Definition ab.

Listing 5.1. HelloWorld.j. Der Quelltext für den Java-Assembler Jasmin kann zu einer Klassendatei übersetzt werden, die nach Ausführung den Text "Hello World!" ausgibt.

; HelloWorld.j

.bytecode 50.0
.class public HelloWorld
.super java/lang/Object

.method public <init>()V
  .limit stack 1
  .limit locals 1
  aload_0
  invokespecial java/lang/Object/<init>()V
  return
.end method

.method public static main([Ljava/lang/String;)V
  .limit stack 2
  .limit locals 1
  getstatic java/lang/System/out Ljava/io/PrintStream;
  ldc "Hello World!"
  invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
  return
.end method

Das Assembler-Listing besteht aus zwei Methoden, wobei die erste Methode den Default-Konstruktor definiert, der den parameterlosen Konstruktor der Superklasse Object aufruft. Innerhalb von HelloWorld.java ist lediglich die main-Methode enthalten. Der Java-Compiler generiert jedoch in diesem Fall automatisch einen Default-Konstruktor, dessen Aufgabe es ist den parameterlosen Konstruktor der Superklasse aufzurufen. Die Klassendatei HelloWorld.class codiert also zwei Methoden und der vom Java-Compiler automatisch erzeugte Konstruktor findet sich daher im Jasmin-Quelltext an entsprechender Stelle wieder. Die auszuführenden JVM-Befehle stehen zwichen den Direktiven .mehtod und .end method. Innerhalb der beiden Methodendefinitionen sind noch die Methodendirektiven .limit stack und .limit locals enthalten, die die maximale Größe des Operandenstapels bzw. des Arrays der lokalen Variablen der Methode festlegen. Die Übersetzung des Assembler-Quelltexts in eine Klassendatei kann durch die Kommandozeile

> java Jasmin HelloWorld.j

erfolgen. Die im aktuellen Verzeichnis erzeugte Datei HelloWorld.class kann mit der folgenden Anweisung ausgeführt werden:

> java HelloWorld

Es wird der gewünschte Text "Hello World!" auf dem Bildschirm ausgegeben.

 

 

 

Diese Seite nutzt Google-Dienste - siehe dazu Datenschutz.

Copyright © 2006, 2007 Harald Roeder