acc-public
acc-private
acc-protected
acc-static
acc-final
acc-synchronized
acc-volatile
acc-transient
acc-native
acc-interface
acc-abstract
define(define symbol binding)
set!(set! symbol binding)
lambda(lambda (arg1 arg2 ...) body)
quote(quote body)
car(car (a1 a2 ...))
cdr(cdr (a1 a2 ...))
cons(cons a1 (a2 a3...))
+ (+ num1 num2)
- (- num1 num2)
* (* num1 num2)
/ (/ num1 num2)
|(| num1 num2)
cond(cond (expr1 body1) (expr2 body2) ...)
>(> num1 num2)
<(< num1 num2)
eq?(eq? obj1 obj2)
num?(num? something)
string?(string? something)
progn(progn body1 body2 ...)
mapcar(mapcar fn (arg1 arg2 ...))
make-ascii-cpe(make-ascii-cpe "stringval")
make-class-cpe(make-class-cpe "classname")
make-name-type-cpe(make-name-type-cpe "name" "signature")
make-field-cpe(make-field-cpe "classname" "fieldname" "signature")
make-interface-cpe(make-interface-cpe "classname" "interfacename" "signature")
make-integer-cpe(make-integer-cpe num)
make-float-cpe(make-float-cpe num)
make-long-cpe(make-long-cpe num)
make-double-cpe(make-double-cpe num)
make-string-cpe(make-string-cpe "string val")
make-method-cpe(make-method-cpe "classname" "methodname" "signature")
bipush sipush ret iload lload fload dload aload istore lstore fstore dstore astore newarray (bipush 3)
jsr goto if_acmpne if_acmpeq if_icmpge if_icmple if_icmpgt if_icmplt if_icmpne if_icmpeq ifge ifgt ifne ifle iflt ifeq ifnull ifnonnull goto_w jsr_w (jsr (make-label "targetname"))
anewarray ldc_w ldc2_w invokenonvirtual invokestatic invokevirtual new checkcast instanceof getstatic putstatic getfield putfield ldc (ldc (make-string-cpe "someval"))
invokeinterface(invokeinterface cpeitem numargs)
iinc(iinc varindex const) multinewarray(multinewarray cpe dimensions)make-field(jas-define-class access cpeitem-name cpeitem-signature [optional constant attribute])make-const(make-const const-cpe-item)
make-outputstream(make-outputstream "filename")
make-label(make-label "sometarget") (pop) (pop) (goto (make-label "sometarget"))demonstrates the method, but be aware that this example will not pass the verifier, since the stack depths are not identical. You can reuse labels, or create new ones. Equivalence is solely by the name used to create the label.
make-class-env(make-class-env)
make-code(make-code)
make-exception(make-exception)
make-catchtable(make-catchtable)
make-catch-entry(make-catch-entry)
jas-class-addcpe(jas-class-addcpe class-env cpeitem)
jas-class-addfield(jas-class-addfield class-env field)
jas-class-addinterface(jas-class-addinterface class-env cpe-item)
jas-class-setclass(jas-class-setclass class-env cpeitem)
jas-class-setsuperclass(jas-class-setsuperclass class-env cpeitem)
jas-class-addmethod(jas-class-addmethod class-env access "methodname" "methodsignature"
code-body exception-attribute)
jas-class-setaccess(jas-class-setaccess class-env access)
jas-class-write(jas-class-write class-env outputstream)
jas-code-addinsn(jas-code-addinsn code-body insn)
jas-code-stack-size(jas-code-stack-size code-body num)
jas-code-var-size(jas-code-var-size code-body num)
jas-set-catchtable(jas-set-catchtable code-body catch-table)
jas-exception-add(jas-exception-add exception cpe-item)
jas-add-catch-entry(jas-add-catch-entry catchtable catchentry)