IJVMA adds four new instructions to IJVM. All of the new instructions relate to memory allocation or access. They manipulate a register known as the memory base. This is actually a shared register, which is only guaranteed to be consistent across IJVMA instructions, and not guaranteed across IJVM instructions. The instructions are: ALLOCA This pops a value off the stack. It then allocates that many bytes at the top of the stack. It then places the base of the allocation onto the stack, while also leaving it in the memory base register. Please note that this blocks off values on the stack underneath the allocation, and that the memory is automatically released when the current method returns. BASE This pops a value off the stack, and places it into the memory base register. IGET This pops a value off of the stack, and adds it to the memory base register. It considers that value to be an address, and pushes the word at that address onto the stack. IPUT This pops a word off of the stack, adds it to the memory base, and considers that to be an address. It then pops a second word off of the stack, and stores that at the address in memory. Please note that IJVMA does not support heap allocation in the instruction set, as that can be done in ISA-level code. The method to consider is using a constant as the memory base, rather than a return value from alloca. To use IJVMA, the file ijvm.conf distributed here must be used rather than the ijvm.conf that came with the mic1 assembler. The microcode must be reassembled before it can be used with mic1sim. Look at the mic1asm subprogram.