first commit
This commit is contained in:
commit
063194f8be
349 changed files with 36508 additions and 0 deletions
78
jasmin/jasmin-2.4/lib/jas/examples/hworld.java
Normal file
78
jasmin/jasmin-2.4/lib/jas/examples/hworld.java
Normal file
|
@ -0,0 +1,78 @@
|
|||
import jas.*;
|
||||
import java.io.*;
|
||||
import sun.tools.java.RuntimeConstants;
|
||||
|
||||
//
|
||||
// This is program that makes calls into the jas package
|
||||
// to generate a class that prints a string afew times.
|
||||
//
|
||||
|
||||
class hworld implements RuntimeConstants
|
||||
{
|
||||
public static void main(String argv[])
|
||||
throws jasError, IOException
|
||||
{
|
||||
|
||||
// class hierarchy
|
||||
ClassEnv nclass = new ClassEnv();
|
||||
nclass.setClass(new ClassCP("out"));
|
||||
nclass.setSuperClass(new ClassCP("java/lang/Object"));
|
||||
nclass.setClassAccess((short)ACC_PUBLIC);
|
||||
|
||||
// Initialization code
|
||||
|
||||
CodeAttr init = new CodeAttr();
|
||||
init.addInsn(new Insn(opc_aload_0));
|
||||
init.addInsn(new Insn(opc_invokenonvirtual,
|
||||
new MethodCP("java/lang/Object", "<init>", "()V")));
|
||||
init.addInsn(new Insn(opc_return));
|
||||
|
||||
|
||||
// Actual code to print string
|
||||
CodeAttr doit = new CodeAttr();
|
||||
|
||||
// store refs in local variables
|
||||
doit.addInsn(new Insn(opc_getstatic,
|
||||
new FieldCP("java/lang/System",
|
||||
"out",
|
||||
"Ljava/io/PrintStream;")));
|
||||
doit.addInsn(new Insn(opc_astore_1));
|
||||
doit.addInsn(new Insn(opc_ldc,
|
||||
new StringCP("Hello World")));
|
||||
doit.addInsn(new Insn(opc_astore_2));
|
||||
|
||||
// Loop index in var reg 3
|
||||
doit.addInsn(new Insn(opc_bipush, 5));
|
||||
doit.addInsn(new Insn(opc_istore_3));
|
||||
|
||||
// Start the loop
|
||||
Label loop = new Label("loop");
|
||||
doit.addInsn(loop);
|
||||
doit.addInsn(new Insn(opc_aload_1));
|
||||
doit.addInsn(new Insn(opc_aload_2));
|
||||
doit.addInsn(new Insn(opc_invokevirtual,
|
||||
new MethodCP("java/io/PrintStream",
|
||||
"println",
|
||||
"(Ljava/lang/String;)V")));
|
||||
doit.addInsn(new IincInsn(3, -1));
|
||||
doit.addInsn(new Insn(opc_iload_3));
|
||||
doit.addInsn(new Insn(opc_ifne, loop));
|
||||
doit.addInsn(new Insn(opc_return));
|
||||
|
||||
// set the right sizes for code
|
||||
doit.setStackSize((short)3); doit.setVarSize((short)4);
|
||||
|
||||
// Add the init code to the class.
|
||||
nclass.addMethod((short)ACC_PUBLIC, "<init>", "()V", init, null);
|
||||
|
||||
// Add the printing code
|
||||
nclass.addMethod((short)(ACC_PUBLIC|ACC_STATIC), "main",
|
||||
"([Ljava/lang/String;)V", doit, null);
|
||||
|
||||
// write it all out
|
||||
nclass.write(new DataOutputStream
|
||||
(new FileOutputStream("out.class")));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue