798 lines
10 KiB
PHP
798 lines
10 KiB
PHP
|
|
||
|
T_BOOLEAN = 4
|
||
|
T_CHAR = 5
|
||
|
T_FLOAT = 6
|
||
|
T_DOUBLE = 7
|
||
|
T_BYTE = 8
|
||
|
T_SHORT = 9
|
||
|
T_INT = 10
|
||
|
T_LONG = 11
|
||
|
|
||
|
macro aaload
|
||
|
db 0x32
|
||
|
end macro
|
||
|
|
||
|
macro aastore
|
||
|
db 0x53
|
||
|
end macro
|
||
|
|
||
|
macro aconst_null
|
||
|
db 0x01
|
||
|
end macro
|
||
|
|
||
|
macro aload index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x2a+index
|
||
|
else if index<100h
|
||
|
db 0x19,index
|
||
|
else
|
||
|
db 0xc4,0x19,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro anewarray class
|
||
|
db 0xbd,(class) shr 8,(class) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro areturn
|
||
|
db 0xb0
|
||
|
end macro
|
||
|
|
||
|
macro arraylength
|
||
|
db 0xbe
|
||
|
end macro
|
||
|
|
||
|
macro astore index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x4b+index
|
||
|
else if index<100h
|
||
|
db 0x3a,index
|
||
|
else
|
||
|
db 0xc4,0x3a,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro athrow
|
||
|
db 0xbf
|
||
|
end macro
|
||
|
|
||
|
macro baload
|
||
|
db 0x33
|
||
|
end macro
|
||
|
|
||
|
macro bastore
|
||
|
db 0x54
|
||
|
end macro
|
||
|
|
||
|
macro bipush byte
|
||
|
if byte>-1 & byte<=5
|
||
|
db 0x03+byte
|
||
|
else
|
||
|
db 0x10,byte
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro caload
|
||
|
db 0x34
|
||
|
end macro
|
||
|
|
||
|
macro castore
|
||
|
db 0x55
|
||
|
end macro
|
||
|
|
||
|
macro checkcast class
|
||
|
db 0xc0,(class) shr 8,(class) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro d2f
|
||
|
db 0x90
|
||
|
end macro
|
||
|
|
||
|
macro d2i
|
||
|
db 0x8e
|
||
|
end macro
|
||
|
|
||
|
macro d2l
|
||
|
db 0x8f
|
||
|
end macro
|
||
|
|
||
|
macro dadd
|
||
|
db 0x63
|
||
|
end macro
|
||
|
|
||
|
macro daload
|
||
|
db 0x31
|
||
|
end macro
|
||
|
|
||
|
macro dastore
|
||
|
db 0x52
|
||
|
end macro
|
||
|
|
||
|
macro dcmpg
|
||
|
db 0x98
|
||
|
end macro
|
||
|
|
||
|
macro dcmpl
|
||
|
db 0x97
|
||
|
end macro
|
||
|
|
||
|
macro dconst_0
|
||
|
db 0x0e
|
||
|
end macro
|
||
|
|
||
|
macro dconst_1
|
||
|
db 0x0f
|
||
|
end macro
|
||
|
|
||
|
macro ddiv
|
||
|
db 0x6f
|
||
|
end macro
|
||
|
|
||
|
macro dload index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x26+index
|
||
|
else if index<100h
|
||
|
db 0x18,index
|
||
|
else
|
||
|
db 0xc4,0x18,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro dmul
|
||
|
db 0x6b
|
||
|
end macro
|
||
|
|
||
|
macro dneg
|
||
|
db 0x77
|
||
|
end macro
|
||
|
|
||
|
macro drem
|
||
|
db 0x73
|
||
|
end macro
|
||
|
|
||
|
macro dreturn
|
||
|
db 0xaf
|
||
|
end macro
|
||
|
|
||
|
macro dstore index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x47+index
|
||
|
else if index<100h
|
||
|
db 0x39,index
|
||
|
else
|
||
|
db 0xc4,0x39,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro dsub
|
||
|
db 0x67
|
||
|
end macro
|
||
|
|
||
|
macro dup
|
||
|
db 0x59
|
||
|
end macro
|
||
|
|
||
|
macro dup_x1
|
||
|
db 0x5a
|
||
|
end macro
|
||
|
|
||
|
macro dup_x2
|
||
|
db 0x5b
|
||
|
end macro
|
||
|
|
||
|
macro dup2
|
||
|
db 0x5c
|
||
|
end macro
|
||
|
|
||
|
macro dup2_x1
|
||
|
db 0x5d
|
||
|
end macro
|
||
|
|
||
|
macro dup2_x2
|
||
|
db 0x5e
|
||
|
end macro
|
||
|
|
||
|
macro f2d
|
||
|
db 0x8d
|
||
|
end macro
|
||
|
|
||
|
macro f2i
|
||
|
db 0x8b
|
||
|
end macro
|
||
|
|
||
|
macro f2l
|
||
|
db 0x8c
|
||
|
end macro
|
||
|
|
||
|
macro fadd
|
||
|
db 0x62
|
||
|
end macro
|
||
|
|
||
|
macro faload
|
||
|
db 0x30
|
||
|
end macro
|
||
|
|
||
|
macro fastore
|
||
|
db 0x51
|
||
|
end macro
|
||
|
|
||
|
macro fcmpg
|
||
|
db 0x96
|
||
|
end macro
|
||
|
|
||
|
macro fcmpl
|
||
|
db 0x95
|
||
|
end macro
|
||
|
|
||
|
macro fconst_0
|
||
|
db 0x0b
|
||
|
end macro
|
||
|
|
||
|
macro fconst_1
|
||
|
db 0x0c
|
||
|
end macro
|
||
|
|
||
|
macro fconst_2
|
||
|
db 0x0d
|
||
|
end macro
|
||
|
|
||
|
macro fdiv
|
||
|
db 0x6e
|
||
|
end macro
|
||
|
|
||
|
macro fload index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x22+index
|
||
|
else if index<100h
|
||
|
db 0x17,index
|
||
|
else
|
||
|
db 0xc4,0x17,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro fmul
|
||
|
db 0x6a
|
||
|
end macro
|
||
|
|
||
|
macro fneg
|
||
|
db 0x76
|
||
|
end macro
|
||
|
|
||
|
macro frem
|
||
|
db 0x72
|
||
|
end macro
|
||
|
|
||
|
macro freturn
|
||
|
db 0xae
|
||
|
end macro
|
||
|
|
||
|
macro fstore index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x43+index
|
||
|
else if index<100h
|
||
|
db 0x38,index
|
||
|
else
|
||
|
db 0xc4,0x38,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro fsub
|
||
|
db 0x66
|
||
|
end macro
|
||
|
|
||
|
macro getfield index
|
||
|
db 0xb4,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro getstatic index
|
||
|
db 0xb2,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro goto branch
|
||
|
offset = branch-$
|
||
|
if offset>=-8000h & offset<8000h
|
||
|
db 0xa7,offset shr 8,offset and 0FFh
|
||
|
else
|
||
|
db 0xc8,offset shr 24,(offset shr 16) and 0FFh,(offset shr 8) and 0FFh,offset and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro goto_w branch
|
||
|
offset = branch-$
|
||
|
db 0xc8,offset shr 24,(offset shr 16) and 0FFh,(offset shr 8) and 0FFh,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro i2b
|
||
|
db 0x91
|
||
|
end macro
|
||
|
|
||
|
macro i2c
|
||
|
db 0x92
|
||
|
end macro
|
||
|
|
||
|
macro i2d
|
||
|
db 0x87
|
||
|
end macro
|
||
|
|
||
|
macro i2f
|
||
|
db 0x86
|
||
|
end macro
|
||
|
|
||
|
macro i2l
|
||
|
db 0x85
|
||
|
end macro
|
||
|
|
||
|
macro i2s
|
||
|
db 0x93
|
||
|
end macro
|
||
|
|
||
|
macro iadd
|
||
|
db 0x60
|
||
|
end macro
|
||
|
|
||
|
macro iaload
|
||
|
db 0x2e
|
||
|
end macro
|
||
|
|
||
|
macro iand
|
||
|
db 0x7e
|
||
|
end macro
|
||
|
|
||
|
macro iastore
|
||
|
db 0x4f
|
||
|
end macro
|
||
|
|
||
|
macro iconst_m1
|
||
|
db 0x02
|
||
|
end macro
|
||
|
|
||
|
macro iconst_0
|
||
|
db 0x03
|
||
|
end macro
|
||
|
|
||
|
macro iconst_1
|
||
|
db 0x04
|
||
|
end macro
|
||
|
|
||
|
macro iconst_2
|
||
|
db 0x05
|
||
|
end macro
|
||
|
|
||
|
macro iconst_3
|
||
|
db 0x06
|
||
|
end macro
|
||
|
|
||
|
macro iconst_4
|
||
|
db 0x07
|
||
|
end macro
|
||
|
|
||
|
macro iconst_5
|
||
|
db 0x08
|
||
|
end macro
|
||
|
|
||
|
macro idiv
|
||
|
db 0x6c
|
||
|
end macro
|
||
|
|
||
|
macro if_acmpeq branch
|
||
|
offset = branch-$
|
||
|
db 0xa5,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_acmpne branch
|
||
|
offset = branch-$
|
||
|
db 0xa6,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_icmpeq branch
|
||
|
offset = branch-$
|
||
|
db 0x9f,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_icmpne branch
|
||
|
offset = branch-$
|
||
|
db 0xa0,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_icmplt branch
|
||
|
offset = branch-$
|
||
|
db 0xa1,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_icmpge branch
|
||
|
offset = branch-$
|
||
|
db 0xa2,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_icmpgt branch
|
||
|
offset = branch-$
|
||
|
db 0xa3,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro if_icmple branch
|
||
|
offset = branch-$
|
||
|
db 0xa4,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifeq branch
|
||
|
offset = branch-$
|
||
|
db 0x99,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifne branch
|
||
|
offset = branch-$
|
||
|
db 0x9a,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro iflt branch
|
||
|
offset = branch-$
|
||
|
db 0x9b,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifge branch
|
||
|
offset = branch-$
|
||
|
db 0x9c,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifgt branch
|
||
|
offset = branch-$
|
||
|
db 0x9d,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifle branch
|
||
|
offset = branch-$
|
||
|
db 0x9e,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifnonnull branch
|
||
|
offset = branch-$
|
||
|
db 0xc7,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ifnull branch
|
||
|
offset = branch-$
|
||
|
db 0xc6,offset shr 8,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro iinc index,const
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<100h & const<80h & const>=-80h
|
||
|
db 0x84,index,const
|
||
|
else
|
||
|
db 0xc4,0x84,(index) shr 8,(index) and 0FFh,(const) shr 8,(const) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro iload index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x1a+index
|
||
|
else if index<100h
|
||
|
db 0x15,index
|
||
|
else
|
||
|
db 0xc4,0x15,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro imul
|
||
|
db 0x68
|
||
|
end macro
|
||
|
|
||
|
macro ineg
|
||
|
db 0x74
|
||
|
end macro
|
||
|
|
||
|
macro instanceof index
|
||
|
db 0xc1,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro invokedynamic index
|
||
|
db 0xba,(index) shr 8,(index) and 0FFh,0,0
|
||
|
end macro
|
||
|
|
||
|
macro invokeinterface index,count
|
||
|
db 0xb9,(index) shr 8,(index) and 0FFh,count
|
||
|
end macro
|
||
|
|
||
|
macro invokespecial index
|
||
|
db 0xb7,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro invokestatic index
|
||
|
db 0xb8,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro invokevirtual index
|
||
|
db 0xb6,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ior
|
||
|
db 0x80
|
||
|
end macro
|
||
|
|
||
|
macro irem
|
||
|
db 0x70
|
||
|
end macro
|
||
|
|
||
|
macro ireturn
|
||
|
db 0xac
|
||
|
end macro
|
||
|
|
||
|
macro ishl
|
||
|
db 0x78
|
||
|
end macro
|
||
|
|
||
|
macro ishr
|
||
|
db 0x7a
|
||
|
end macro
|
||
|
|
||
|
macro istore index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x3b+index
|
||
|
else if index<100h
|
||
|
db 0x36,index
|
||
|
else
|
||
|
db 0xc4,0x36,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro isub
|
||
|
db 0x64
|
||
|
end macro
|
||
|
|
||
|
macro iushr
|
||
|
db 0x7c
|
||
|
end macro
|
||
|
|
||
|
macro ixor
|
||
|
db 0x82
|
||
|
end macro
|
||
|
|
||
|
macro jsr branch
|
||
|
offset = branch-$
|
||
|
if offset>=-8000h & offset<8000h
|
||
|
db 0xa8,offset shr 8,offset and 0FFh
|
||
|
else
|
||
|
db 0xc9,offset shr 24,(offset shr 16) and 0FFh,(offset shr 8) and 0FFh,offset and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro jsr_w branch
|
||
|
offset = branch-$
|
||
|
db 0xc9,offset shr 24,(offset shr 16) and 0FFh,(offset shr 8) and 0FFh,offset and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro l2d
|
||
|
db 0x8a
|
||
|
end macro
|
||
|
|
||
|
macro l2f
|
||
|
db 0x89
|
||
|
end macro
|
||
|
|
||
|
macro l2i
|
||
|
db 0x88
|
||
|
end macro
|
||
|
|
||
|
macro ladd
|
||
|
db 0x61
|
||
|
end macro
|
||
|
|
||
|
macro laload
|
||
|
db 0x2f
|
||
|
end macro
|
||
|
|
||
|
macro land
|
||
|
db 0x7f
|
||
|
end macro
|
||
|
|
||
|
macro lastore
|
||
|
db 0x50
|
||
|
end macro
|
||
|
|
||
|
macro lcmp
|
||
|
db 0x94
|
||
|
end macro
|
||
|
|
||
|
macro lconst_0
|
||
|
db 0x09
|
||
|
end macro
|
||
|
|
||
|
macro lconst_1
|
||
|
db 0x0a
|
||
|
end macro
|
||
|
|
||
|
macro ldc index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<100h
|
||
|
db 0x12,index
|
||
|
else
|
||
|
db 0x13,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro ldc_w index
|
||
|
db 0x13,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ldc2_w index
|
||
|
db 0x14,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ldiv
|
||
|
db 0x6d
|
||
|
end macro
|
||
|
|
||
|
macro lload index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x1e+index
|
||
|
else if index<100h
|
||
|
db 0x16,index
|
||
|
else
|
||
|
db 0xc4,0x16,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro lmul
|
||
|
db 0x69
|
||
|
end macro
|
||
|
|
||
|
macro lneg
|
||
|
db 0x75
|
||
|
end macro
|
||
|
|
||
|
macro lookupswitch
|
||
|
; db 0xab,...
|
||
|
err "not implemented yet"
|
||
|
end macro
|
||
|
|
||
|
macro lor
|
||
|
db 0x81
|
||
|
end macro
|
||
|
|
||
|
macro lrem
|
||
|
db 0x71
|
||
|
end macro
|
||
|
|
||
|
macro lreturn
|
||
|
db 0xad
|
||
|
end macro
|
||
|
|
||
|
macro lshl
|
||
|
db 0x79
|
||
|
end macro
|
||
|
|
||
|
macro lshr
|
||
|
db 0x7b
|
||
|
end macro
|
||
|
|
||
|
macro lstore index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<=3
|
||
|
db 0x3f+index
|
||
|
else if index<100h
|
||
|
db 0x37,index
|
||
|
else
|
||
|
db 0xc4,0x37,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro lsub
|
||
|
db 0x65
|
||
|
end macro
|
||
|
|
||
|
macro lushr
|
||
|
db 0x7d
|
||
|
end macro
|
||
|
|
||
|
macro lxor
|
||
|
db 0x83
|
||
|
end macro
|
||
|
|
||
|
macro monitorenter
|
||
|
db 0xc2
|
||
|
end macro
|
||
|
|
||
|
macro monitorexit
|
||
|
db 0xc3
|
||
|
end macro
|
||
|
|
||
|
macro multianewarray index,dimensions
|
||
|
db 0xc5,(index) shr 8,(index) and 0FFh,dimensions
|
||
|
end macro
|
||
|
|
||
|
macro new index
|
||
|
db 0xbb,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro newarray atype
|
||
|
db 0xbc,atype
|
||
|
end macro
|
||
|
|
||
|
macro nop
|
||
|
db 0x00
|
||
|
end macro
|
||
|
|
||
|
macro pop
|
||
|
db 0x57
|
||
|
end macro
|
||
|
|
||
|
macro pop2
|
||
|
db 0x58
|
||
|
end macro
|
||
|
|
||
|
macro putfield index
|
||
|
db 0xb5,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro putstatic index
|
||
|
db 0xb3,(index) shr 8,(index) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro ret index
|
||
|
if index<0
|
||
|
err "invalid index"
|
||
|
else if index<100h
|
||
|
db 0xa9,index
|
||
|
else
|
||
|
db 0xc4,0xa9,(index) shr 8,(index) and 0FFh
|
||
|
end if
|
||
|
end macro
|
||
|
|
||
|
macro return
|
||
|
db 0xb1
|
||
|
end macro
|
||
|
|
||
|
macro saload
|
||
|
db 0x35
|
||
|
end macro
|
||
|
|
||
|
macro sastore
|
||
|
db 0x56
|
||
|
end macro
|
||
|
|
||
|
macro sipush short
|
||
|
db 0x11,(short) shr 8,(short) and 0FFh
|
||
|
end macro
|
||
|
|
||
|
macro swap
|
||
|
db 0x5f
|
||
|
end macro
|
||
|
|
||
|
macro tableswitch
|
||
|
; db 0xaa,...
|
||
|
err "not implemented yet"
|
||
|
end macro
|
||
|
|
||
|
macro breakpoint
|
||
|
db 0xca
|
||
|
end macro
|
||
|
|
||
|
macro impdep1
|
||
|
db 0xfe
|
||
|
end macro
|
||
|
|
||
|
macro impdep2
|
||
|
db 0xff
|
||
|
end macro
|