To use JVM-Assemble:

Copy it into your directory on a linux machine.

Then type the following commands:

chmod u+x jvm-assemble
./jvm-assemble <filename> <label> > <outputfilename>

<filename> is the name of your bytecode file.
<label> is the name of a (required) label in your bytecode file.  Just put some label at the beginning of your file.
<outputfilename> is the name of your destination file.  For example, I might type:

./jvm-assemble tim.jvm tim > array.jvm

This would take tim.jvm which contains my ILOADs, IADDs, etc., and look for the label "tim" which it would find at the beginning.  It would output the results into array.jvm, which will now contain all the hex bytecodes in a nice SPIM format.

You may need to remove the <outputfilename> before running jvm-assemble.  To do this, type:

rm <outputfilename>

You can write your bytecode very much like is shown on the last page of assignment 4.  You can use labels for your gotos and ifs.  You can use a single argument for those that take two immediates and they will be translated.