Ich versuche statische Analyse von Bytecode in Prolog zu tun. Ich benutze die Bcel-Bibliothek, um Anweisungsliste von einem MethodGen zu erhalten. Für aload_0, bekomme ich 0:aload_0[42](1)
Brauchen Sie Hilfe, Java Bytecode Anweisung zu verstehen
Ich verstehe aload_0
ist zum Laden 0. Lokalvariable gedacht. Aber mir fällt es schwer, die nächsten Bits zu verstehen, d. H. [42](1)
. Es ist auch dort für andere Anweisungen, zB:
invokespecial[183](3) 8
return[177](1)
Kann jemand bitte erklären, was diese sind ?. Würde es sehr zu schätzen wissen!
Der normale Weg, eine Java-API zu verwenden, ist die Objekteigenschaften über die Klassenmitglieder abzufragen, deren Namen sind in der Regel selbsterklärend, anstatt Vermutungen über das Format des 'toString tun()' Ausgabe. Außerdem ist [dokumentiert] (https://commons.apache.org/proper/commons-bcel/apidocs/org/apache/bcel/generic/Instruction.html#toString-boolean-): 'Langes Ausgabeformat: "[" "]" "(" ")" ' –
Holger
@Holger Danke, dass Sie mich aufgeklärt haben. Ich hatte die Dokumentation überprüft, wie ich behauptete, und bekam die Antwort, nur vergaß es zu markieren, antwortete hier. –