Jasmin - Java Assembler Interface

Jasmin Home Page
Jon Meyer
March 1997

Jasmin is a Java Assembler Interface. It takes ASCII descriptions for Java classes, written in a simple assembler-like syntax and using the Java Virtual Machine instruction set. It converts them into binary Java class files suitable for loading into a JVM implementation.

The Java Virtual Machine is a platform-neutral runtime engine used to execute Java programs. The JVM is generating a lot of interest these days because of its secure, efficient multi-threaded architecture. People are now developing compilers for other programming languages that generate code which can be run on the Java Virtual Machine (see my Resource Guide below).

Java Virtual Machine

Jasmin was written as the companion to the book "Java Virtual Machine", published by O'Reilly, written by Troy Downing and myself. (available now!) (see cover).


About Jasmin.
Describes what Jasmin is, why I wrote Jasmin, and the kinds of people who might be interested in Jasmin.
Jasmin User Guide
A basic Jasmin user guide. It describes the syntax of the assembler, and how to use it.
The Jasmin README file that comes with the Jasmin distribution.
Jasmin FAQ
Gives email feedback on Jasmin, and Q+A on the JVM in general.
Java Virtual Machine Instruction Reference
A quick reference for all of the JVM instructions. Includes Jasmin syntax.

Related Links

See my Resource Guide for a more comprehensive list of online things to do with the Java Virtual Machine.

Jasmin uses Java Cup, and JAS internally, so you should check out these pages too.

Downloading Jasmin

You can obtain Jasmin 1.0 from:

This version of Jasmin is written in Java, and needs Sun's JDK 1.0 to run or equivalent. I have tested it under Solaris, SGI and Windows 95 (using Symantec Cafe and Visual J++).

For people who use systems with filename restrictions, a copy of the ZIP file containing the classes used by Jasmin is available here.

Register For Updates!!!

If you find Jasmin useful, send me email at meyer@cs.nyu.edu and I will add your name to the list of people informed when new versions and bug fixes become available.

Questions, Problems

If you have any questions or problems, you can email me at: meyer@cs.nyu.edu.


The following JVM disassemblers support Jasmin format:


  • Shawn Silverman has created a disassembler that can output files in the Jasmin syntax. This lets you take a Java class file, disassemble it, modify the VM code, and reassemble it. Versions for Windows and Solaris are available. See D-Java.

    DJava (Java version)

  • NEW! Shawn Silverman has also created a new pure Java implementation of D-Java, which includes a "builder" that lets you assemble, generate, and disassemble .class files and provides a Jasmin output format. You can download this from Shawn Silverman's FTP site, or see: Shawn Silverman's pages.

    JavaClass API

  • NEW! Markus Dahm has created the JavaClass API, which also provides a Java API to .class files, and includes the ability to assemble, generate, and disassemble .class files and provides a Jasmin output format. There is also a simple Mini language which uses the JavaClass API.

    Kimera Disassembler

  • The folks at Kimera have developed an online disassembler which spits out Jasmin.


    Jason Hunt (djh4@cs.wustl.edu) has written a Java assembler, which you may want to check out. See http://siesta.cs.wustl.edu/~djh4/).

    Java Grinder is another Java assembler/disassembler with a text based syntax.

    Copyright (1998) Jonathan Meyer, under the terms of the GNU General Public License.

    Work on Jasmin is supported in part by the NYU Media Research Laboratory.

    Jasmin Home | Jon Meyer's Home