javaseiten.de   |   Version 0.6
 

4.10. JVM-Befehlssatz: Kurzbeschreibung F

 

 

Befehl Operandenstapel Opcode
f2d ..., value --> ..., result 0x8d

Wandle einen float-Wert in einen double-Wert um.

Bezeichner Typ Beschreibung
value float Wert, der umgewandelt werden soll.
result double Ergebnis der Umwandlung.

Beispiel:

float a = -3.7f;        0: ldc #2; //float -3.7f
                        3: fstore_1
double b = a;           4: fload_1
                        5: f2d
                        6: dstore_2

Binäre Darstellung:
-3.7f = 
  (110000000    11011001100110011001101)b
-3.700000047683716d = 
  (110000000000 11011001100110011001101 00000000000000000000000000000)b

Die Variable b vom Typ double enthält nach der Umwandlung den Wert -3.700000047683716. Bei einem double-Wert besteht die Mantisse der Binärdarstellung aus 52 Bits (Bits 51-0). Die Bits 51-29 entsprechen der Mantisse (Bits 22-0) des float-Wertes. Der Programmausschnitt befindet sich innerhalb einer main-Methode. Mit Hilfe des Ladebefehls ldc #2 wird die 2. Konstante im Konstantenpool der zum Quelltext zugehörigen Klassendatei auf den Operandenstapel geladen (Laufzeit-Konstantenpool). Der Wert der Float-Konstanten wird innerhalb der Klassendatei durch die Bytefolge c0 6c cc cd repräsentiert (hexadezimale Schreibweise der Binärdarstellung von -3.7f). Siehe dazu auch Binärdarstellung einer Gleitkommazahl (32 Bit).

 

 

f2i ..., value --> ..., result 0x8b

Wandle einen float-Wert in einen int-Wert um.

Bezeichner Typ Beschreibung
value float Wert, der umgewandelt werden soll.
result int Ergebnis der Umwandlung.

Beispiel 1:

float a = -3.7f;        0: ldc #2; //float -3.7f
                        3: fstore_1
int b = (int)a;         4: fload_1
                        5: f2i
                        6: istore_2

Binäre Darstellung:
-3.7f = (11000000 01101100 11001100 11001101)b
  -3i = (11111111 11111111 11111111 11111101)b

Die Variable b vom Typ int enthält nach der Umwandlung den Wert -3 (entspricht Math.ceil(-3.7f)). Der Programmausschnitt befindet sich innerhalb einer main-Methode. Mit Hilfe des Ladebefehls ldc #2 wird die 2. Konstante im Konstantenpool der zum Quelltext zugehörigen Klassendatei auf den Operandenstapel geladen (Laufzeit-Konstantenpool). Der Wert der Float-Konstanten wird innerhalb der Klassendatei durch die Bytefolge c0 6c cc cd repräsentiert (hexadezimale Schreibweise der Binärdarstellung von -3.7f). Siehe dazu auch Binärdarstellung einer Gleitkommazahl (32 Bit).

Beispiel 2:

Das folgende Beispielprogramm zeigt die Abbildung der Konstanten Float.NaN, Float.POSITIVE_INFINITY und Float.NEGATIVE_INFINITY in den Integer-Zahlenbereich:

public class Test {
  public static void main(String[] args) {
    float a = Float.NaN;
    float b = Float.POSITIVE_INFINITY;
    float c = Float.NEGATIVE_INFINITY;
    
    int ai = (int)a;
    int bi = (int)b;
    int ci = (int)c;
    
    System.out.println("ai = " + ai);
    System.out.println("bi = " + bi);
    System.out.println("ci = " + ci);
  }
}

Konsolenausgabe:
ai = 0
bi = 2147483647
ci = -2147483648

Die Ausgaben für bi und ci entsprechen dabei dem Integer-Maximalwert Integer.MAX_VALUE bzw. dem Integer-Minimalwert Integer.MIN_VALUE. Die Konstante Float.NaN wird auf eine Integer-Null abgebildet.

 

 

f2l ..., value --> ..., result 0x8c

Wandle einen float-Wert in einen long-Wert um.

Bezeichner Typ Beschreibung
value float Wert, der umgewandelt werden soll.
result long Ergebnis der Umwandlung.

Beispiel:

float a = -3.7f;         0: ldc #2; //float -3.7f
                         3: fstore_1
long b = (long)a;        4: fload_1
                         5: f2l
                         6: lstore_2

Binäre Darstellung:
-3.7f =                                   (11000000 01101100 11001100 11001101)b
-3L = (11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101)b

Die Variable b vom Typ long enthält nach der Umwandlung den Wert -3 (entspricht Math.ceil(-3.7f)). Siehe dazu auch die Beispiele von f2i.

 

 

fadd ..., value1, value2 --> ..., result 0x62

Addiere zwei float-Werte.

Bezeichner Typ Beschreibung
value1 float 1. Operand
value2 float 2. Operand
result float Ergebnis der Operation.

Die beiden obersten Elemente werden vom Stapel genommen und addiert: result = value1' + value2'. Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt.

Beispiel:

float a = 1.0f;         0: fconst_1
                        1: fstore_1
float b = 2.0f;         2: fconst_2
                        3: fstore_2
float c = a + b;        4: fload_1
                        5: fload_2
                        6: fadd
                        7: fstore_3

 

 

faload ..., arrayref, index --> ..., value 0x30

Lade einen float-Wert value aus einem float-Array auf den Operandenstapel.

Bezeichner Typ Beschreibung
arrayref reference Referenz auf ein Array.
index int Index im Array.
value float  

Mit Hilfe von arrayref und index wird ein float-Wert ermittelt und auf den Stapel gelegt.

Beispiel:

float[] f = {4.0f, 5.0f};         0: iconst_2
                                  1: newarray float
                                  3: dup
                                  4: iconst_0
                                  5: ldc #2; //float 4.0f
                                  7: fastore
                                  8: dup
                                  9: iconst_1
                                 10: ldc #3; //float 5.0f
                                 12: fastore
                                 13: astore_1
float f0 = f[0];                 14: aload_1
                                 15: iconst_0
                                 16: faload
                                 17: fstore_2

Mit fastore werden zunächst die beiden Zahlenwerte 4.0 und 5.0 in das Array geschrieben. Anschließend erfolgt das Auslesen des ersten Elements (Index 0) mit faload.

 

 

fastore ..., arrayref, index, value --> ... 0x51

Speichere einen float-Wert value in ein float-Array.

Bezeichner Typ Beschreibung
arrayref reference Referenz auf ein Array.
index int Index im Array.
value float  

Auf dem Operandenstapel befinden sich, vor der Ausführung des Befehls, die Referenz auf das Array, der Index des Elements im Array und der zu speichernde float-Wert value. Siehe auch das Beispiel zu #faload.

 

 

fcmpg ..., value1, value2 --> ..., result 0x96

Vergleiche zwei float-Werte.

Bezeichner Typ Beschreibung
value1 float 1. Vergleichswert
value2 float 2. Vergleichswert
result int Ergebnis des Vergleichs (ohne Float.NaN).
value1' > value2' : result = 1,
value1' == value2' : result = 0,
value1' < value2' : result = -1.

Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt. Falls ein Vergleichswert (oder beide) die Konstante Float.NaN ist (Not-a-Number), wird durch fcmpg der Integer-Wert 1 auf den Operandenstapel gelegt. Die Anweisungen fcmpg und fcmpl unterscheiden sich lediglich in der Behandlung von Vergleichen, in denen ein Vergleichswert Float.NaN vorkommt (es wird der Zahlenwert 1 bzw. -1 auf den Stapel gelegt).

Beispiel:

float a = 2.3f;            0: ldc #2; //float 2.3f
                           2: fstore_1
float b = 3.4f;            3: ldc #3; //float 3.4f
                           5: fstore_2
boolean c = a < b;         6: fload_1
                           7: fload_2
                           8: fcmpg
                           9: ifge 16
                          12: iconst_1
                          13: goto 17
                          16: iconst_0
                          17: istore_3

Nachdem die Vergleichsanweisung fcmpg durchgeführt wurde, befindet sich der Integer-Wert -1 an oberster Stelle des Operandenstapels, da 2.3 kleiner als 3.4 ist. Da das Ergebnis von fcmpg kleiner als 0 ist, erfolgt keine Verzweigung mittels ifge, sondern es wird mit dem JVM-Befehl incost_1 fortgefahren. Nach Abarbeitung des Programmausschnitts befindet sich der Integer-Wert 1 im Array der lokalen Variablen bei Index 3 (istore_3, Index 3 korrespondiert mit der boolean-Variablen c).

 

 

fcmpl ..., value1, value2 --> ..., result 0x95

Vergleiche zwei float-Werte.

Bezeichner Typ Beschreibung
value1 float 1. Vergleichswert
value2 float 2. Vergleichswert
result int Ergebnis des Vergleichs (ohne Float.NaN).
value1' > value2' : result = 1,
value1' == value2' : result = 0,
value1' < value2' : result = -1.

Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt. Falls ein Vergleichswert (oder beide) die Konstante Float.NaN ist (Not-a-Number), wird durch fcmpl der Integer-Wert -1 auf den Operandenstapel gelegt. Die Anweisungen fcmpl und fcmpg unterscheiden sich lediglich in der Behandlung von Vergleichen, in denen ein Vergleichswert Float.NaN vorkommt (es wird der Zahlenwert -1 bzw. 1 auf den Stapel gelegt).

Beispiel:

float a = 3.4f;            0: ldc #2; //float 3.4f
                           2: fstore_1
float b = 2.3f;            3: ldc #3; //float 2.3f
                           5: fstore_2
boolean c = a > b;         6: fload_1
                           7: fload_2
                           8: fcmpl
                           9: ifle 16
                          12: iconst_1
                          13: goto 17
                          16: iconst_0
                          17: istore_3

Nachdem die Vergleichsanweisung fcmpl durchgeführt wurde, befindet sich der Integer-Wert 1 an oberster Stelle des Operandenstapels, da 3.4 größer als 2.3 ist. Da das Ergebnis von fcmpl größer als 0 ist, erfolgt keine Verzweigung mittels ifle, sondern es wird mit dem JVM-Befehl incost_1 fortgefahren. Nach Abarbeitung des Programmausschnitts befindet sich der Integer-Wert 1 im Array der lokalen Variablen bei Index 3 (istore_3, Index 3 korrespondiert mit der boolean-Variablen c).

 

 

fconst_0 ... --> ..., 0.0 0x0b

Lege die float-Konstante 0.0 auf den Operandenstapel.

Beispiel:

float f = 0.0f;        0: fconst_0
                       1: fstore_1

 

 

fconst_1 ... --> ..., 1.0 0x0c

Lege die float-Konstante 1.0 auf den Operandenstapel.

Beispiel: Siehe dazu fconst_0.

 

 

fconst_2 ... --> ..., 2.0 0x0d

Lege die float-Konstante 2.0 auf den Operandenstapel.

Beispiel: Siehe dazu fconst_0.

 

 

fdiv ..., value1, value2 --> ..., result 0x6e

Dividiere zwei float-Werte.

Bezeichner Typ Beschreibung
value1 float 1. Operand
value2 float 2. Operand
result float Ergebnis der Operation.

Die beiden obersten Elemente werden vom Stapel genommen und die folgende Division wird durchgeführt: result = value1' / value2'. Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt.

Beispiel:

float a = 1.0f;         0: fconst_1
                        1: fstore_1
float b = 2.0f;         2: fconst_2
                        3: fstore_2
float c = a / b;        4: fload_1
                        5: fload_2
                        6: fdiv
                        7: fstore_3

 

 

fload index ... --> ..., value 0x17

Lade einen float-Wert aus dem Array der lokalen Variablen auf den Operandenstapel.

Bezeichner Typ Beschreibung
index Vorzeichenloses Byte Index im Array der lokalen Variablen.
value float  

Der Eintrag value im Array bei diesem Index muss vom Typ float sein.

Beispiel:

public class Test {
  public static void main(String[] args) {
    float f1 = args.length;                        0: aload_0
                                                   1: arraylength
                                                   2: i2f
                                                   3: fstore_1
    float f2 = 0.0f;                               4: fconst_0
                                                   5: fstore_2
    float f3 = 1.0f;                               6: fconst_1
                                                   7: fstore_3
    float f4 = 2.0f;                               8: fconst_2
                                                   9: fstore 4
    float f5 = f1 + f2 + f3 + f4;                 11: fload_1
                                                  12: fload_2
                                                  13: fadd
                                                  14: fload_3
                                                  15: fadd
                                                  16: fload 4
                                                  18: fadd
                                                  19: fstore 5
  }
}

Das Laden der Zahlenwerte aus dem Array der lokalen Variablen übernehmen zunächst die mit einem Byte codierten JVM-Befehle fload_1 bis fload_3. Das Laden der Gleitkommazahl bei Index 4 übernimmt fload. Auch bei mehr als 4 lokalen Variablen würde im Beispiel das Laden mit fload erfolgen und mit dem auf den Opcode folgenden Indexbyte könnten bis zu 256 lokale Variablen adressiert werden. Im Array der lokalen Variablen ist bei Index 0 eine Referenz auf ein String-Array gespeichert, dem einzigen Parameter der main-Methode.

 

 

fload_0 ... --> ..., value 0x22

Lade den float-Wert einer lokalen Variablen auf den Operandenstapel. Dabei steht 0 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Der Eintrag im Array bei Index 0 muss vom Typ float sein. Bei fload_0 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fload index. Siehe auch das Beispiel zu fload.

 

 

fload_1 ... --> ..., value 0x23

Lade den float-Wert einer lokalen Variablen auf den Operandenstapel. Dabei steht 1 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Der Eintrag im Array bei Index 1 muss vom Typ float sein. Bei fload_1 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fload index. Siehe auch das Beispiel zu fload.

 

 

fload_2 ... --> ..., value 0x24

Lade den float-Wert einer lokalen Variablen auf den Operandenstapel. Dabei steht 2 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Der Eintrag im Array bei Index 2 muss vom Typ float sein. Bei fload_2 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fload index. Siehe auch das Beispiel zu fload.

 

 

fload_3 ... --> ..., value 0x25

Lade den float-Wert einer lokalen Variablen auf den Operandenstapel. Dabei steht 3 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Der Eintrag im Array bei Index 3 muss vom Typ float sein. Bei fload_3 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fload index. Siehe auch das Beispiel zu fload.

 

 

fmul ..., value1, value2 --> ..., result 0x6a

Multipliziere zwei float-Werte.

Bezeichner Typ Beschreibung
value1 float 1. Operand
value2 float 2. Operand
result float Ergebnis der Operation.

Die beiden obersten Elemente werden vom Stapel genommen und miteinander multipliziert: result = value1' * value2'. Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt.

Beispiel:

float a = 1.0f;         0: fconst_1
                        1: fstore_1
float b = 2.0f;         2: fconst_2
                        3: fstore_2
float c = a * b;        4: fload_1
                        5: fload_2
                        6: fmul
                        7: fstore_3

 

 

fneg ..., value --> ..., result 0x76

Negiere einen float-Wert.

Bezeichner Typ Beschreibung
value float  
result float  

Es gilt: result = -value'. Die Berechnung gilt, falls value' nicht Float.NaN ist (Not-a-Number (NaN) besitzt kein Vorzeichen). Der Wert value' wird aus value durch eine Value Set Conversion ermittelt. Die Negation einer positiven float-Null ist nicht gleich der Subtraktion dieser Null von einer weiteren positiven Null (siehe Beispiel 2).

Beispiel 1:

float a = 2.0f;     0: fconst_2
                    1: fstore_1
float b = -a;       2: fload_1
                    3: fneg
                    4: fstore_2

Beispiel 2:

public class Test {
  public static void main(String[] args) {
    float a = 3.0f;
    float a2 = -a;
    float a3 = 0.0f - a;
    
    float b = 0.0f;
    float b2 = -b;
    float b3 = 0.0f - b;
    
    float c = -Float.NaN;
    float d = -Float.NEGATIVE_INFINITY;
    
    System.out.println("a=" + a + ", a2=" + a2 + ", a3=" + a3);
    System.out.println("b=" + b + ", b2=" + b2 + ", b3=" + b3);
    System.out.println("c=" + c);
    System.out.println("d=" + d);
  }
}

Konsolenausgabe:
a=3.0, a2=-3.0, a3=-3.0
b=0.0, b2=-0.0, b3=0.0
c=NaN
d=Infinity

 

 

frem ..., value1, value2 --> ..., result 0x72

Berechne den float-Restwert value1 % value2.

Bezeichner Typ Beschreibung
value1 float 1. Operand
value2 float 2. Operand
result float Ergebnis der Operation.

Die beiden obersten Elemente werden vom Stapel genommen und die folgende Berechnung wird durchgeführt: result = value1' - (value2' * q). Die Berechnung gilt, falls value1' und value2' nicht Float.NaN, Foat.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY oder 0 sind. Wenn die angegebene Berechnung nicht erfolgen kann, werden entsprechende Festlegungen getroffen (siehe auch Beispiel 3). Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt. q ist ein int-Zahlenwert.

Beispiel 1: 10.7 % 4.1 = 2.5

float a = 10.7f;        0: ldc #2; //float 10.7f
                        2: fstore_1
float b = 4.1f;         3: ldc #3; //float 4.1f
                        5: fstore_2
float c = a % b;        6: fload_1
                        7: fload_2
                        8: frem
                        9: fstore_3

Der Inhalt der Variablen c ist 2.5 (siehe auch Beispiel 2).

Beispiel 2:

public class Test {
  public static void main(String[] args) {
    float value1 = 10.7f;
    float value2 = 4.1f;
    float result = value1 % value2;
    
    float qf = value1 / value2;
    int q = (int)qf;
    float result2 = value1 - (value2 * q);
        
    System.out.println("result = " + result);
    System.out.println("qf=" + qf + ", q=" + q + ", result2=" + result2);
  }
}

Konsolenausgabe:
result=2.5
qf=2.609756, q=2, result2=2.5

Beispiel 3:

public class Test {
  public static void main(String[] args) {
    float r1 = Float.NaN  % 0.0f;
    float r2 = Float.NEGATIVE_INFINITY % 0.0f;
    float r3 = 0.0f % Float.POSITIVE_INFINITY;
    float r4 = 3.0f % Float.POSITIVE_INFINITY;
    float r5 = 0.0f % 0.0f;
    System.out.println("r1=" + r1);
    System.out.println("r2=" + r2);
    System.out.println("r3=" + r3);
    System.out.println("r4=" + r4);
    System.out.println("r5=" + r5);
  }
}

Konsolenausgabe:
r1=NaN  r2=NaN  r3=0.0  r4=3.0  r5=NaN

 

 

freturn ..., value --> [leer] 0xae

Gebe einen float-Wert der aktuellen Methode zurück.

Bezeichner Typ Beschreibung
value float Rückgabewert der aktuellen Methode.

Der Rückgabewert value wird vom Stapel genommen und an den Aufrufer der Methode zurückgegeben, indem dieser auf den Operandenstapel des Methodenaufrufers gelegt wird.

Beispiel:

public class Test {

  public static float method1() {                public static float method1();
                                                 Code:
    float a = 3.0f;                              0: ldc	#2; //float 3.0f
                                                 2: fstore_0
    return a;                                    3: fload_0
  }                                              4: freturn

  public static void main(String[] args) {
    float b = method1();
  }
}

 

 

fstore index ..., value --> ... 0x38

Speichere einen float-Wert in das Array der lokalen Variablen.

Bezeichner Typ Beschreibung
index Vorzeichenloses Byte Index im Array der lokalen Variablen.
value float  

Die float-Zahl value wird vom Stapel genommen und in das Array der lokalen Variablen geschrieben. Bevor die Gleitkommazahl in das Array geschrieben wird, erfolgt möglicherweise eine Value Set Conversion. Siehe auch das Beispiel zu fload.

 

 

fstore_0 ..., value --> ... 0x43

Speichere einen float-Wert in das Array der lokalen Variablen. Dabei steht 0 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Die float-Zahl value wird vom Stapel genommen und in das Array der lokalen Variablen geschrieben (bei Index 0). Bevor die Gleitkommazahl in das Array geschrieben wird, erfolgt möglicherweise eine Value Set Conversion. Bei fstore_0 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fstore index. Siehe auch das Beispiel zu fload.

 

 

fstore_1 ..., value --> ... 0x44

Speichere einen float-Wert in das Array der lokalen Variablen. Dabei steht 1 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Die float-Zahl value wird vom Stapel genommen und in das Array der lokalen Variablen geschrieben (bei Index 1). Bevor die Gleitkommazahl in das Array geschrieben wird, erfolgt möglicherweise eine Value Set Conversion. Bei fstore_1 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fstore index. Siehe auch das Beispiel zu fload.

 

 

fstore_2 ..., value --> ... 0x45

Speichere einen float-Wert in das Array der lokalen Variablen. Dabei steht 2 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Die float-Zahl value wird vom Stapel genommen und in das Array der lokalen Variablen geschrieben (bei Index 2). Bevor die Gleitkommazahl in das Array geschrieben wird, erfolgt möglicherweise eine Value Set Conversion. Bei fstore_2 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fstore index. Siehe auch das Beispiel zu fload.

 

 

fstore_3 ..., value --> ... 0x46

Speichere einen float-Wert in das Array der lokalen Variablen. Dabei steht 3 für einen Index im Array der lokalen Variablen des zugehörigen Methoden-Frames.

Bezeichner Typ Beschreibung
value float  

Die float-Zahl value wird vom Stapel genommen und in das Array der lokalen Variablen geschrieben (bei Index 3). Bevor die Gleitkommazahl in das Array geschrieben wird, erfolgt möglicherweise eine Value Set Conversion. Bei fstore_3 ist der Index im entsprechenden Array implizit und es wird lediglich ein Byte für diesen Befehl benötigt, im Gegensatz zu fstore index. Siehe auch das Beispiel zu fload.

 

 

fsub ..., value1, value2 --> ..., result 0x66

Subtrahiere zwei float-Werte.

Bezeichner Typ Beschreibung
value1 float 1. Operand
value2 float 2. Operand
result float Ergebnis der Operation.

Die beiden obersten Elemente werden vom Stapel genommen und subtrahiert: result = value1' - value2'. Die Werte value1' und value2' werden aus value1 und value2 durch eine Value Set Conversion ermittelt.

Beispiel:

float a = 2.0f;         0: fconst_2
                        1: fstore_1
float b = 1.0f;         2: fconst_1
                        3: fstore_2
float c = a - b;        4: fload_1
                        5: fload_2
                        6: fsub
                        7: fstore_3

 

 

 

Diese Seite nutzt Google-Dienste - siehe dazu Datenschutz.

Copyright © 2006, 2007 Harald Roeder