|
|
Common Intermediate Language (CIL)
Beispiel "untypisierte Anweisungen"
CIL-Anweisungen machen oft keine Angaben über den Typ der Argumente, während Java-Bytecode-Anweisung diesen immer spezifizieren.
Im Beispiel stellen wir die Anweisungen für das Laden, Addidieren und Speichern von Integer- und Gleitkommazahlen in CIL und Java-Bytecode gegenüber.
Dazu verwenden wir eine Klasse Addition , die in zwei statischen Methoden jeweils die Werte zweier lokaler Integer- bzw. Gleitkommavariablen lädt, addiert und das Ergebnis in einer dritten lokalen Variablen speichert.
Addition.cs
public class Addition {
public static void AddInt () {
int i1 = 6;
int i2 = 17;
int res = i1 + i2;
}
public static void AddFloat () {
float f1 = 34.4f;
float f2 = 43.1f;
float res = f1 + f2;
}
public static void Main () {
AddInt();
AddFloat();
}
}
|
Mit dem IL-Disassembler (ildasm.exe ) können wir den erzeugten CIL-Code der beiden Methoden betrachen.
Die Java-Version der Klasse Addition ist fast völlig ident mit der C#-Version.
Addition.java
public class Addition {
public static void addInt () {
int i1 = 6;
int i2 = 17;
int res = i1 + i2;
}
public static void addFloat () {
float f1 = 34.4f;
float f2 = 43.1f;
float res = f1 + f2;
}
public static void main (String[] args) {
addInt();
addFloat();
}
}
|
Der Java-Class File Disassembler (javap.exe ) zeigt uns die Java-Bytecode-Anweisungen.
Wir erkennen sofort die unterschiedlichen Anweisungen für das Laden, Addieren und Speichern von Integer- bzw. Gleitkommawerten im Java-Bytecode.
|