Nachdem ich eine Zeit lang Java studiert habe, glaube ich, dass jeder die Bedeutung von JVM verstehen konnte, aber Sie wissen möglicherweise nicht viel über das darin enthaltene Befehlssystem. Im wahrsten Sinne des Wortes handelt es sich um ein Werkzeug zum Aufrufen von Anweisungen. Was einige spezifische Inhaltseinführungen betrifft, werden wir sie Ihnen unten zeigen und sie über das JVM-Register mit Ihnen teilen. Lassen Sie uns gemeinsam an der heutigen Studie teilnehmen.
1. Beschreibung des Unterrichtssystems
Das JVM-Unterrichtssystem ist anderen Computer-Unterrichtssystemen sehr ähnlich. Gleichzeitig bestehen Java-Anweisungen auch aus zwei Teilen: Opcode und Operand. Der Opcode ist eine 8-Bit-Binärzahl, gefolgt von einem Operanden, dessen Länge nach Bedarf bestimmt wird. Der Operationscode wird verwendet, um die Art der Befehlsoperation anzugeben (hier erklären wir ihn in Form von Assemblersymbolen). iload bedeutet beispielsweise das Laden einer Ganzzahl aus dem Speicher, anewarray bedeutet das Zuweisen von Speicherplatz für ein neues Array und iand bedeutet das „AND“ zweier Ganzzahlen stellt die Prozesssteuerung dar, die von einem Aufruf einer Methode zurückgegeben wird. Wenn die Länge 8 Bit überschreitet, wird der Operand zur Speicherung in mehrere Bytes aufgeteilt. Für diesen Fall verwendet die JVM die Codierungsmethode „Bigendian“, d. h. die hohen Bits befinden sich in den niedrigen Bytes. Diese Situation ist die gleiche wie bei der von Motorola und RISCCPU verwendeten Codierungsmethode, unterscheidet sich jedoch von der von Intel verwendeten „Littleendian“-Codierungsmethode, dh die niederwertigen Bits speichern die niederwertigen Bytes.
Das Java-Befehlssystem ist für die Implementierung der Java-Sprache konzipiert. Es enthält Anweisungen zum Aufrufen von Methoden und zur Überwachung von Systemen mit mehreren Prioritäten. Die Länge der 8-Bit-Opcodes in der JVM bringt die JVM auf maximal 256 Anweisungen, und jetzt werden mehr als 160 Anweisungen verwendet.
2. Häufig verwendete Register
Alle CPUs enthalten einen Registersatz, der den Systemstatus und die vom Prozessor benötigten Informationen speichert. Wenn eine virtuelle Maschine mehr Register definiert, können mehr Informationen daraus abgerufen werden, ohne auf den Stapel oder den Speicher zugreifen zu müssen, was zur Verbesserung der Laufgeschwindigkeit beiträgt. Wenn jedoch die Anzahl der Register in der virtuellen Maschine die Anzahl der tatsächlichen CPUs übersteigt, wird bei der Implementierung der virtuellen Maschine viel Prozessorzeit für die Simulation der Register mit herkömmlichem Speicher aufgewendet, was tatsächlich die Effizienz der virtuellen Maschine verringert . Hierzu setzt die JVM nur die 4 am häufigsten verwendeten Register. Sie sind:
(1) PC-Programmzähler
(2) Top-Zeiger des Optop-Operandenstapels
(3) Rahmen aktueller Ausführungsumgebungszeiger
(4) vars zeigt auf den Zeiger auf die erste lokale Variable in der aktuellen Ausführungsumgebung
Alle Register sind 32 Bit. PC wird verwendet, um die Ausführung des Programms aufzuzeichnen. Optop, Frame und Vars werden verwendet, um Zeiger auf den Java-Stack-Bereich aufzuzeichnen.
Das Obige ist eine Einführung in das JVM-Anweisungssystem von Java. Dieser Artikel konzentriert sich hauptsächlich auf theoretische Wissenspunkte. Nach dem Lernen können Sie das Dokument speichern, um die zukünftige Wissensüberprüfung zu erleichtern.