IJVM

IJVM is an instruction set architecture created by Andrew Tanenbaum for his MIC-1 architecture. It is used to teach assembly basics in his book Structured Computer Organization.

IJVM is mostly a subset of the JVM assembly language that is used in the Java platform. This instruction set is so simple that it's difficult to write complex programs in it (for example, no shift instructions are provided).

IJVM Instructions
There's also a set of special ARRAY instructions. *where the first value was pushed on the stack first, so the top of the stack is the operand at the bottom of the lists shown above.

Operand descriptions
 * byte: A numeric literal, in octal (032 - leading zero), decimal (26 - no leading digits), or hexadecimal (0x1A - leading zero-x) format. Character literals ('M - leading single quote) are also allowed. Compiled to a 1-byte constant.
 * label name: The string name of a label. Compiled to a 2-byte offset.
 * variable name: The string name of a local variable. Compiled to a 1-byte value, indicating an offset into the local variable frame.
 * method name: The string name of a method. When compiled, the address of the method is calculated and put into the constant pool. This operand is then replaced with the 2-byte index (in the constant pool) of the address.
 * constant name: The string name of a constant. Compiled to a 2-byte index.
 * N/A: This instruction takes no operands.