Laboratorium 7: maszyna wirtualna JVM; Jasmin

Omawiamy przykład kodu JVM, np.

.class  public Hello
.super  java/lang/Object
 
; standard initializer
.method public <init>()V
   aload_0
   invokespecial java/lang/Object/<init>()V
   return
.end method
 
.method public static main([Ljava/lang/String;)V
.limit stack 2
  getstatic  java/lang/System/out Ljava/io/PrintStream;
  ldc "Hello"
  invokevirtual  java/io/PrintStream/println(Ljava/lang/String;)V
  return
.end method

Kompilujemy prostą klasę np.

public class Inc  {
    public static void main(String[] args) {
	System.out.println(test1(41));
    }
    static int test1(int i) {
	return i+1;
    }
}

Następnie analizujemy kod przy pomocy javap -c, po czym zapisujemy go w formacie asemblera Jasmin.

Rozszerzyć kalkulator z poprzednich laboratoriów o generowanie kodu Jasmin.