So after adding a dispatch mechanism into the DISASSEMBLE
function of ABCL I
also want to show a neat way of disassembling arbitrary Java classes using one
of the provided disassemblers.
First of, make sure that you have the ObjectWeb ASM library in your classpath
(everything up from version 3 should work at least, perhaps even lower
versions), note that in future releases you might be able to load it via Maven
and one of the optional contribs as well, likely via (require '#:asm-all)
.
Next up, try (disassemble #'list)
and confirm that some output is shown.
Now to show bytecode for arbitrary Java classes we've got to jump through some
additional hoops - though perhaps at some point this could become a stable API
as well:
(system::objectweb-disassemble (#"getResourceAsStream" (java:jclass "java.lang.Object") "/java/util/Random.class"))
I haven't tried this via the JAD disassembler, but it seems likely that a
similar approach should work for it too.