Wozu schreibe ich 3 und 1 noch hin?

berserkerdq2

Bekanntes Mitglied
Hi, habe eben die Musterlösung für eine Additionsaufgabe von uns angeschaut

Java:
add 3 1
 ILOAD 1
 ILOAD 2
 IADD
 ISTORE 3
 ILOAD 3
 IRETURN

Wozu steht neben dem add 3 und 1? Das sind die Variablen oder nicht? Wenn ja, werden dort die zwei Werte gespeichert, die der Methode add gesendet werden?
 

berserkerdq2

Bekanntes Mitglied
Da war bestimmt ein Semikolon davor Kommentar.

; -> Kommentar
Leider nicht die Musterlösung lautet:

Code:
; File starts directly with instructions (= main method)

; Call method add(4,2)
; - We first push 0. This always needs to be done when calling a method;
;   will be used as OBJREF (i.e., will be used for return address)
; - We then push the first argument (4)
; - And finally the second argument (2)
 BIPUSH 0
 BIPUSH 4
 BIPUSH 2
 INVOKEVIRTUAL add

; SPRINT prints the given string (stored in constant pool)
 SPRINT "Result is: "

; IPRINT prints the number on top of the stack
; in this case: the return value of add
 IPRINT

; Print a newline
 SPRINT "\n"

; We are done
 HALT

; 3 arguments: 0=OBJREF, 1=x, 2=y
; 1 local variable: 3=sum (not really needed here, for illustration purposes)
; returns result on top of stack
add 3 1
 ILOAD 1
 ILOAD 2
 IADD
 ISTORE 3
 ILOAD 3
 IRETURN
 

berserkerdq2

Bekanntes Mitglied
Die 3 ist die Anzahl an Argumenten, die die Methode bekommt.
Und die 1 ist die Anzahl an _zusätzlichen_ lokalen Variablen, die die Methode alloziiert.
Siehe den Kommentar an der Methode:
Achso, danke dir.

Was ich mich nun Frage.

Vorhin hast Du mir ja gezeigt, wie ich ohne zusätzliche Variablen meine Methode erneut aufrufen konnte.

Java:
BIPUSH 5 ; stack: 5
BIPUSH 1 ; stack: 5, 1
ISUB     ; stack: 4
BIPUSH 3 ; stack: 4, 3
INVOKEVIRTUAL meineMethode

Hier bei der Musterlösung wird ja ein Return mit IRETURN gemacht, ich muss aber trotzdem INVOKEVIRTUAL nutzen oder?

Im Hinblick auf eien rekursive Methode, die isch selber aufruft, da nutze ich INVOKERITUAL? Und wenn ich einen Integer zurück gebe, dann direkt IRETURN?


// Hat sich doch nun erledigt, habe es herausgefunden Invokeritual ist ja der Methoden aufruf, der dann als einzgier wert auf den stack geladen wird.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Wozu runnable implementieren? Allgemeine Java-Themen 3
C Wozu verpflichten GPL und LGPL? Allgemeine Java-Themen 8
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
R JDK installieren Gibt es ab 2019 überhaupt noch Java? Allgemeine Java-Themen 6
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
J Could not convert socket to TLS - gestern liefs noch Allgemeine Java-Themen 2
H Wie kann ich überprüfen ob das Feld noch frei ist? Allgemeine Java-Themen 5
M Windows 98 - Mit welchem JDK (Version) kann noch Programm dafür erstellt werden Allgemeine Java-Themen 6
R Seleium / WebDriver findet weder URL noch Title Allgemeine Java-Themen 1
HarleyDavidson Was ist das? Noch nie gesehen... Allgemeine Java-Themen 3
B Input/Output Datei noch geöffnet trotz Close Allgemeine Java-Themen 4
A Noch eine Frage zur Methode matches() Allgemeine Java-Themen 2
J Lebt das Objekt noch?? Allgemeine Java-Themen 12
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
I Exceptions - weder catch- noch finally-Klausel funktioniert Allgemeine Java-Themen 12
J Rekursive Methode und if-Blöcke, was wird noch ausgeführt? Allgemeine Java-Themen 2
D Brauche mal Hilfe bin noch nicht so fit Allgemeine Java-Themen 3
Y Mal wieder vergleichen von Strings.[Leider noch ein Problem] Allgemeine Java-Themen 18
S Zeichen, dass Programm noch läuft Allgemeine Java-Themen 3
G Sind Applets noch uptodate Allgemeine Java-Themen 24
G Aufruf einer Methode wenn Klasse noch nicht existiert Allgemeine Java-Themen 3
A Noch freie Nummern anzeigen lassen Allgemeine Java-Themen 3
J Immer noch OpenOffice.org - Malheur Allgemeine Java-Themen 4
A Warum hab ich noch nie ein .jar Archiv gesehen? Allgemeine Java-Themen 5
T Geht das vielleicht noch einfacher? Allgemeine Java-Themen 7
G Java Cryptography Extension (JCE) mit Java 1.6 noch aktuell? Allgemeine Java-Themen 1
P Source code verloren habe nur noch kompilierte .jar. Allgemeine Java-Themen 12
E Nach Packen in Jar ist Sound nur noch abgehackt zu hören Allgemeine Java-Themen 2
F JSP noch aktuell? Allgemeine Java-Themen 5
Ark Noch mal Fourier Allgemeine Java-Themen 2
S Prozess javaw.exe läuft immer noch, obwohl Programm beendet Allgemeine Java-Themen 6
G Was soll noch alles in Java kommen? Allgemeine Java-Themen 14
B Noch einmal Kopierschutz, sorry Allgemeine Java-Themen 7
G nur noch 2 kleinigkeiten dann bin ich glücklich^^ Allgemeine Java-Themen 2
M Kann man hier noch was rausholen? Allgemeine Java-Themen 16
flashfactor Testen ob ein R/3 erreichbar bzw. noch am leben ist. Allgemeine Java-Themen 2
M noch ein rendererversuch Allgemeine Java-Themen 8
D Laufen meine alten progs auf java 5 noch? Allgemeine Java-Themen 7
D Threads wollen weder schlafen noch aufgewckt werden! Allgemeine Java-Themen 6
C Was geht noch? Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben