"Inline assembly" for Java byte codes

bytecode, java

Solution

`ClassLoader` has a method, `defineClass`, that lets you dynamically generate a class by providing the bytecode. Combine this with Javassist or other suggestions from this previous question.

Problem

I'm looking for existing implementations of the following idea: suppose somebody wants to write "inline assembly" byte codes inside a normal Java program (most relevant applications would involve invokedynamic instruction that is not otherwise available in Java). One way to do this would be as follows: ``` void foo(boolean b) { Label l1 = Asm.label(); Label l2 = Asm.label(); int i = Asm.no_int(); Asm._const(0); Asm.store(i); l1.bind(); Asm.load(i); Asm.push(10); Asm.if_cmpge(l2); Asm.getstatic("java/lang/System", "out", "Ljava/io/PrintStream"); Asm.load(i); Asm.invokevirtual("java/io/PrintStream", "println", "(I)V"); Asm.inc(i); Asm._goto(l1); l2.bind(); Asm._return(); } ``` Instructions are encoded as API calls, then we'd need to run a normal java compiler, and then to post-process the byte code and replace the API calls with actual instructions. P.S. I'm aware of ASMifier of the ASM Framework, it does not solve the problem stated above.

Original source