Was ist const-Klasse und const-Methode-Typ OP-Codes für? Welche Java-Code erzeugt sie?

stimmen
0

Ich bin ein Werkzeug für die Nachbearbeitung von Dalvik Anwendungen. Für Tests Ich möchte Code erstellen, die jeden Opcode enthält. Ich habe Probleme zu verstehen, was const-Klasse und const-Methode-Typ OP-Codes zu tun. Die Definitionen in Dalvik der offiziellen Dokumentation Klärung nicht das Problem für mich.

const-Klasse

Bewegen Sie einen Verweis auf die Klasse von dem angegebenen Index in das angegebene Register angegeben. In dem Fall, in dem der angegebenen Typ primitiv ist, wird diese speichert eine Referenz auf den entarteten Klasse Urtyps.

Was ist Verweis auf die Klasse? Dies ist nicht so weit auf ein Objekt verweisen, wie ich weiß.

Das gleiche mit

const-Verfahren-Typ

Verschieben einer Referenz auf das Verfahren Prototyp durch den gegebenen Index in dem spezifizierten Register spezifiziert.

Soweit ich verstehe, ist diese Funktion nicht Zeiger. Funktionszeiger behandelt wird durch

const-Methode-handle

Verschieben einer Referenz auf das Verfahren Griff durch den gegebenen Index in dem spezifizierten Register spezifiziert.

Meine Frage ist:

Was const-Klasse und const-Methode-Typ verwendet? Welche Art von Java-Code würde diese Opcodes in Dalvik generieren?

Vielleicht lohnt es sich zu erwähnen, dass meine Java-Erfahrung eher gering ist - ich bin c ++ Art von Kerl.

Veröffentlicht am 18/12/2018 um 11:02
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
3

const-classkann erzeugt werden , wenn Sie auf eine der Klasse Eigenschaft eines Objekts beziehen. zB Class cls = MyObject.class.

Soweit ich weiß, Methode behandelt und Typen werden nicht von Java - Code generiert. Sie können sie mithilfe von Reflektion verweisen, aber ich glaube nicht so tun , wird die tatsächlich generieren const-method-typeoder const-method-handleAnweisungen

Sie unterstützen Besetzung für invoke-custom, die in erster Linie für die Verwendung durch andere Sprachen gedacht, die Java - Bytecode kompiliert bekommen und schließlich Dalvik Bytecode.

Beantwortet am 18/12/2018 um 12:48
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more