Comment afficher ou accéder aux valeurs de paramètre de méthode ou aux objets à l'aide du code ASM Byte?ASM Bytecode Method Paramètre Valeurs
Répondre
La prise en compte des types de paramètres de méthode, vous pouvez faire quelque chose comme ça:
int off = (access | Opcodes.ACC_STATIC) == 0 ? 0 : 1;
int opcode = Type.getArgumentTypes(desc)[param + off].getOpcode(Opcodes.IALOAD);
mv.visitVarIns(opcode, param);
...
où param
est le numéro de paramètre de méthode et access
et desc
sont des valeurs que vous obtenez de paramètres correspondants de ClassVisitor.html#visitMethod.
Les arguments de méthode sont les premières variables locales. Pour accéder au premier argument, le mnémonique bytecode ressemble à aload_0
ou iload_0
ou lload_0
etc, selon le type de l'argument. Pour les arguments passés le quatrième, vous diriez aload 4
etc.
Remarque, le premier argument d'une méthode d'instance est une référence à this
. Donc, le premier argument sera local # 1, et vous obtiendrez comme aload_1
etc.
Cependant, vous générez du bytecode avec les trucs ASM ... faites-le. Il semble que vous diriez quelque chose comme mv.visitVarInsn(ALOAD, 0);
, où mv
est votre MethodVisitor. Le 0
serait remplacé par l'index de variable local.
- 1. ASM Bytecode avec HttpURLConnection
- 2. bytecode et ASM
- 3. Test avec le bytecode ASM
- 4. égalité des cordes en asm bytecode
- 5. ASM: sortie bytecode java et opcode
- 6. Jolie impression d'une méthode en ASM Bytecode
- 7. ASM Bytecode pour identifier les boucles for/while
- 8. Un moyen facile d'accumuler quelques visiteurs ASM-Bytecode?
- 9. définition de variable et affectation de détection asm bytecode
- 10. ASM instrumentation bytecode pour l'entrée de la méthode/sortie
- 11. ROL dans x86 ASM dans PROC paramètre
- 12. variables en sortie des valeurs x86 asm
- 13. insert FrameNode avec ASM
- 14. Obtenir java.lang.IllegalAccessError lors de l'accès au champ privé d'une classe externe via ASM Java Bytecode
- 15. Comment modifier un bytecode Java à l'aide d'ASM 4.0
- 16. Passer un paramètre dans la collection select method pour text_method
- 17. Passage du paramètre URL à Rest Method via Angular $ HTTP
- 18. Java, ASM org.objectweb.asm.util.CheckClassAdapter provoque ancienne version majeur.mineur 0.0
- 19. Comment obtenir la signature de méthode avec ObjectWeb ASM?
- 20. bytecode java incomplet
- 21. ASM, les fonctions d'appel avec asm
- 22. TextView textize method
- 23. Flex 3 valeurs get de HttpService method = "GET"
- 24. Java/bytecode tissant/éditant sur J2ME?
- 25. Comment extraire les valeurs des bits ARM ASM?
- 26. Utilisation de valeurs relatives dans le tri de matrices (asm)
- 27. statechanging method
- 28. Récupération du bytecode à l'exécution
- 29. jquery find method
- 30. Valeurs SQL Paramètre Multiple
Salut, Merci pour votre réponse .. Pouvez-vous donner quelques exemples en utilisant ASM? –
Pas vraiment; Je n'ai jamais utilisé les trucs, et j'ai du mal à comprendre * pourquoi * ça marche, encore moins * comment *, en partie à cause de l'abus rampant des visiteurs. On dirait que * tout * est un visiteur de quelque sorte. : P Une vraie bibliothèque de génération de bytecode serait plus simple; voir 'System.Reflection.Emit' de .net. – cHao