IJVM, ich tue auf meinen Stack 100 und 120 rein, danach subtrahiere ich, macht die Maschine 100-120 oder 120-100?

Beste Antwort
Hast Du mal gesucht:
a) Dokumentation IJVM: Da wird sowas beschrieben sein.
b) es gibt bestimmt Möglichkeiten IJVM Code zu testen.

Beides ist aus meiner Sicht sehr wichtig, wenn man sich mit sowas beschäftigen muss. Denn so Fragen werden ja regelmäßig zu vielen Befehlen kommen und wenn man sowas lernen muss, dann macht es Sinn, wenn man als Übung damit etwas herum spielen kann.

Aber um die Frage zu beantworten:
Aus einer Dokumentation zu ISUB:
Pop two words from stack; subtract the top word from the second to top word, push the answer.

Nach deinen zwei BIPUSH Befehlen ist das oberste Element 120 und das zweite von oben die 100. Und es wird somit die 120 von der 100 abgezogen.
Hast Du mal gesucht:
a) Dokumentation IJVM: Da wird sowas beschrieben sein.
b) es gibt bestimmt Möglichkeiten IJVM Code zu testen.

Beides ist aus meiner Sicht sehr wichtig, wenn man sich mit sowas beschäftigen muss. Denn so Fragen werden ja regelmäßig zu vielen Befehlen kommen und wenn man sowas lernen muss, dann macht es Sinn, wenn man als Übung damit etwas herum spielen kann.

Aber um die Frage zu beantworten:
Aus einer Dokumentation zu ISUB:
Pop two words from stack; subtract the top word from the second to top word, push the answer.

Nach deinen zwei BIPUSH Befehlen ist das oberste Element 120 und das zweite von oben die 100. Und es wird somit die 120 von der 100 abgezogen.
 
Beste Antwort
Schlag es doch einfach in der offiziellen Beschreibung nach.

Both value1 and value2 must be of type int. The values are popped from the operand stack. The int result is value1 - value2. The result is pushed onto the operand stack.

For int subtraction, a-b produces the same result as a+(-b). For int values, subtraction from zero is the same as negation.

The result is the 32 low-order bits of the true mathematical result in a sufficiently wide two's-complement format, represented as a value of type int. If overflow occurs, then the sign of the result may not be the same as the sign of the mathematical difference of the two values.

Despite the fact that overflow may occur, execution of an isub instruction never throws a run-time exception.
 
Hast Du mal gesucht:
a) Dokumentation IJVM: Da wird sowas beschrieben sein.
b) es gibt bestimmt Möglichkeiten IJVM Code zu testen.

Beides ist aus meiner Sicht sehr wichtig, wenn man sich mit sowas beschäftigen muss. Denn so Fragen werden ja regelmäßig zu vielen Befehlen kommen und wenn man sowas lernen muss, dann macht es Sinn, wenn man als Übung damit etwas herum spielen kann.

Aber um die Frage zu beantworten:
Aus einer Dokumentation zu ISUB:


Nach deinen zwei BIPUSH Befehlen ist das oberste Element 120 und das zweite von oben die 100. Und es wird somit die 120 von der 100 abgezogen.
Danke, aber was heißt 120 von 100 abgezogen? Ist das 120-100 oder 100-120?

Weil wenn ich sage ich nehme 5 von 10 Äpfeln, so ist das eigentlich 10-5, in dem Falle dann 100-120?
 

Zurück
Oben