orjasm! September, 1997

RJASM stands for "Original macRo Java ASseMbler". It is, well, a java bytecode assembler. It lets you declare classes and methods just like in java (i.e. "public static class Goober extends Blah implements Whatever") but write assembly code instead of java code within that framework. It supports branching to labels, local and global equates, automatic construction of the constant pool (for example, "invokevirtual void Mymethod(int, string)" would add the method and its related constants to the pool), automatic optimizations (for example, "iload var" where var is 1 would assemble as "iload_1") and lots of other stuff too.

nfortunately, I wasn't quite finished with it when school started... And I didn't have time all term to even look at it, and when the next break came around I had lost all interest in Java assembly. So it's a dead project.

efore writing this assembler, I didn't know that the java assembly format was documented anywhere. So I figured out the entire instruction set on my own by hex-editing java executables and seeing what they did. That was pretty fun, at least.