zurückkehrt Zum Beispiel drückt x86 die Rücksprungadresse auf dem Stapel und dann (bei Rückkehr) knallt es. Wie löst JVM dieses Problem? Danke im Voraus.Wie JVM von der Funktion
Antwort
Wenn Sie auf die Sprungbefehle beziehen jsr
, jsr_w
und ihre ret
sie verhalten sich ähnlich, wie es auf x86 geschieht, Absenderadresse und Parameter werden auf dem Stapel und die Rückkehradresse geschoben wird von dort abgerufen, wenn der Rückkehr.
Aber es ist wichtig zu beachten, dass es sich hier um Miniatur-Subroutinen handelt, nicht Java-Methoden.
Aufrufe an Java-Methoden werden mit spezifischen invoke_*
Bytecode-Anweisungen ausgeführt, die in der Implementierung variieren können (abhängig von der verwendeten jvm) und viel mehr handhaben müssen (z. B. virtuelle Funktionsauflösung) als für einfache Sprungbefehle erforderlich ist.
Sie werden immer noch einen Stapel verwenden und einen neuen Aufrufrahmen für jeden Methodenaufruf definieren, aber der Vorgang der Rückkehr von einer Funktion wird direkt von der invoke_*
Implementierung behandelt, die Ziel-Java-Methode muss nur den Rückgabewert korrekt speichern auf seinem Stapelrahmen.
- 1. Ausführen/Interpretieren von C auf der JVM?
- 2. Identifizieren von Komponentenspeicher in der JVM
- 3. Senden eines POSIX-Signals von der JVM
- 4. JVM-Fehler bei der Installation von Clearcase
- 5. JVM Fairness bei der Planung von Threads
- 6. Wie wird die dauerhafte JVM-Funktion in Cake implementiert?
- 7. Verständnis von JVM Besser
- 8. JVM-Speicher von C
- 9. Wie beeinflusst @FunctionalInterface das Laufzeitverhalten der JVM?
- 10. Identifizieren der JVM-Standardzeitzone
- 11. Verknüpfen von JNI-Code mit der JVM
- 12. Begrenzung der Anzahl der von der JVM verwendeten Threads
- 13. NUMA Bekanntheit von JVM
- 14. Finden Jvm von Java
- 15. Wie JVM intern arbeitet
- 16. Wie wird systemeigener Code von der JVM behandelt
- 17. Wie lautet die Standardcodierung der JVM?
- 18. Wie verzweige ich JVM?
- 19. Wie sammle ich JVM Leistungsstatistik von Java
- 20. JVM Implementieren von JRE
- 21. Der Grund für JVM Existenz
- 22. bundling jvm mit der Anwendung
- 23. JVM/Code-Tuning zur Reduzierung der JVM-Aussetzungszeit
- 24. Speicher außerhalb von JVM zuweisen und in JVM verwenden
- 25. Speicherdetails von JVM als Prozess
- 26. Wie JVM-Optimierung zu deaktivieren
- 27. Klassen während der JVM-Laufzeit neu laden
- 28. Überwachung von Threads in JVM
- 29. Start jvm Subprozess von War Web App
- 30. Wie JVM Absturz Datei hs_err_pidXYZ.log
JVM wird nicht zur Assembly kompiliert. –
Ich weiß es. Es hat nichts gemeinsam. – Gilgamesz
Wissen Sie, Java Bytecode zu lesen? [Hier] (https://en.wikipedia.org/wiki/Java_bytecode#Example) ist eine sehr, sehr grundlegende Grundierung. –