Safe Haskell | None |
---|
This module declares data type for JVM instructions, and BinaryState instances to read/write them.
- data Instruction
- = NOP
- | ACONST_NULL
- | ICONST_M1
- | ICONST_0
- | ICONST_1
- | ICONST_2
- | ICONST_3
- | ICONST_4
- | ICONST_5
- | LCONST_0
- | LCONST_1
- | FCONST_0
- | FCONST_1
- | FCONST_2
- | DCONST_0
- | DCONST_1
- | BIPUSH Word8
- | SIPUSH Word16
- | LDC1 Word8
- | LDC2 Word16
- | LDC2W Word16
- | ILOAD Word8
- | LLOAD Word8
- | FLOAD Word8
- | DLOAD Word8
- | ALOAD Word8
- | ILOAD_ IMM
- | LLOAD_ IMM
- | FLOAD_ IMM
- | DLOAD_ IMM
- | ALOAD_ IMM
- | IALOAD
- | LALOAD
- | FALOAD
- | DALOAD
- | AALOAD
- | BALOAD
- | CALOAD
- | SALOAD
- | ISTORE Word8
- | LSTORE Word8
- | FSTORE Word8
- | DSTORE Word8
- | ASTORE Word8
- | ISTORE_ IMM
- | LSTORE_ IMM
- | FSTORE_ IMM
- | DSTORE_ IMM
- | ASTORE_ IMM
- | IASTORE
- | LASTORE
- | FASTORE
- | DASTORE
- | AASTORE
- | BASTORE
- | CASTORE
- | SASTORE
- | POP
- | POP2
- | DUP
- | DUP_X1
- | DUP_X2
- | DUP2
- | DUP2_X1
- | DUP2_X2
- | SWAP
- | IADD
- | LADD
- | FADD
- | DADD
- | ISUB
- | LSUB
- | FSUB
- | DSUB
- | IMUL
- | LMUL
- | FMUL
- | DMUL
- | IDIV
- | LDIV
- | FDIV
- | DDIV
- | IREM
- | LREM
- | FREM
- | DREM
- | INEG
- | LNEG
- | FNEG
- | DNEG
- | ISHL
- | LSHL
- | ISHR
- | LSHR
- | IUSHR
- | LUSHR
- | IAND
- | LAND
- | IOR
- | LOR
- | IXOR
- | LXOR
- | IINC Word8 Word8
- | I2L
- | I2F
- | I2D
- | L2I
- | L2F
- | L2D
- | F2I
- | F2L
- | F2D
- | D2I
- | D2L
- | D2F
- | I2B
- | I2C
- | I2S
- | LCMP
- | FCMP CMP
- | DCMP CMP
- | IF CMP Word16
- | IF_ICMP CMP Word16
- | IF_ACMP CMP Word16
- | GOTO Word16
- | JSR Word16
- | RET
- | TABLESWITCH Word8 Word32 Word32 Word32 [Word32]
- | LOOKUPSWITCH Word8 Word32 Word32 [(Word32, Word32)]
- | IRETURN
- | LRETURN
- | FRETURN
- | DRETURN
- | ARETURN
- | RETURN
- | GETSTATIC Word16
- | PUTSTATIC Word16
- | GETFIELD Word16
- | PUTFIELD Word16
- | INVOKEVIRTUAL Word16
- | INVOKESPECIAL Word16
- | INVOKESTATIC Word16
- | INVOKEINTERFACE Word16 Word8
- | NEW Word16
- | NEWARRAY Word8
- | ANEWARRAY Word16
- | ARRAYLENGTH
- | ATHROW
- | CHECKCAST Word16
- | INSTANCEOF Word16
- | MONITORENTER
- | MONITOREXIT
- | WIDE Word8 Instruction
- | MULTINANEWARRAY Word16 Word8
- | IFNULL Word16
- | IFNONNULL Word16
- | GOTO_W Word32
- | JSR_W Word32
- data ArrayType
- data CodeException = CodeException {
- eStartPC :: Word16
- eEndPC :: Word16
- eHandlerPC :: Word16
- eCatchType :: Word16
- data Code = Code {
- codeStackSize :: Word16
- codeMaxLocals :: Word16
- codeLength :: Word32
- codeInstructions :: [Instruction]
- codeExceptionsN :: Word16
- codeExceptions :: [CodeException]
- codeAttrsN :: Word16
- codeAttributes :: Attributes File
- data IMM
- data CMP
- atype2byte :: ArrayType -> Word8
- encodeInstructions :: [Instruction] -> ByteString
- encodeMethod :: Code -> ByteString
- decodeMethod :: ByteString -> Code
Documentation
data Instruction Source
JVM instruction set. For comments, see JVM specification.
NOP | 0 |
ACONST_NULL | 1 |
ICONST_M1 | 2 |
ICONST_0 | 3 |
ICONST_1 | 4 |
ICONST_2 | 5 |
ICONST_3 | 6 |
ICONST_4 | 7 |
ICONST_5 | 8 |
LCONST_0 | 9 |
LCONST_1 | 10 |
FCONST_0 | 11 |
FCONST_1 | 12 |
FCONST_2 | 13 |
DCONST_0 | 14 |
DCONST_1 | 15 |
BIPUSH Word8 | 16 |
SIPUSH Word16 | 17 |
LDC1 Word8 | 18 |
LDC2 Word16 | 19 |
LDC2W Word16 | 20 |
ILOAD Word8 | 21 |
LLOAD Word8 | 22 |
FLOAD Word8 | 23 |
DLOAD Word8 | 24 |
ALOAD Word8 | 25 |
ILOAD_ IMM | 26, 27, 28, 29 |
LLOAD_ IMM | 30, 31, 32, 33 |
FLOAD_ IMM | 34, 35, 36, 37 |
DLOAD_ IMM | 38, 39, 40, 41 |
ALOAD_ IMM | 42, 43, 44, 45 |
IALOAD | 46 |
LALOAD | 47 |
FALOAD | 48 |
DALOAD | 49 |
AALOAD | 50 |
BALOAD | 51 |
CALOAD | 52 |
SALOAD | 53 |
ISTORE Word8 | 54 |
LSTORE Word8 | 55 |
FSTORE Word8 | 56 |
DSTORE Word8 | 57 |
ASTORE Word8 | 58 |
ISTORE_ IMM | 59, 60, 61, 62 |
LSTORE_ IMM | 63, 64, 65, 66 |
FSTORE_ IMM | 67, 68, 69, 70 |
DSTORE_ IMM | 71, 72, 73, 74 |
ASTORE_ IMM | 75, 76, 77, 78 |
IASTORE | 79 |
LASTORE | 80 |
FASTORE | 81 |
DASTORE | 82 |
AASTORE | 83 |
BASTORE | 84 |
CASTORE | 85 |
SASTORE | 86 |
POP | 87 |
POP2 | 88 |
DUP | 89 |
DUP_X1 | 90 |
DUP_X2 | 91 |
DUP2 | 92 |
DUP2_X1 | 93 |
DUP2_X2 | 94 |
SWAP | 95 |
IADD | 96 |
LADD | 97 |
FADD | 98 |
DADD | 99 |
ISUB | 100 |
LSUB | 101 |
FSUB | 102 |
DSUB | 103 |
IMUL | 104 |
LMUL | 105 |
FMUL | 106 |
DMUL | 107 |
IDIV | 108 |
LDIV | 109 |
FDIV | 110 |
DDIV | 111 |
IREM | 112 |
LREM | 113 |
FREM | 114 |
DREM | 115 |
INEG | 116 |
LNEG | 117 |
FNEG | 118 |
DNEG | 119 |
ISHL | 120 |
LSHL | 121 |
ISHR | 122 |
LSHR | 123 |
IUSHR | 124 |
LUSHR | 125 |
IAND | 126 |
LAND | 127 |
IOR | 128 |
LOR | 129 |
IXOR | 130 |
LXOR | 131 |
IINC Word8 Word8 | 132 |
I2L | 133 |
I2F | 134 |
I2D | 135 |
L2I | 136 |
L2F | 137 |
L2D | 138 |
F2I | 139 |
F2L | 140 |
F2D | 141 |
D2I | 142 |
D2L | 143 |
D2F | 144 |
I2B | 145 |
I2C | 146 |
I2S | 147 |
LCMP | 148 |
FCMP CMP | 149, 150 |
DCMP CMP | 151, 152 |
IF CMP Word16 | 153, 154, 155, 156, 157, 158 |
IF_ICMP CMP Word16 | 159, 160, 161, 162, 163, 164 |
IF_ACMP CMP Word16 | 165, 166 |
GOTO Word16 | 167 |
JSR Word16 | 168 |
RET | 169 |
TABLESWITCH Word8 Word32 Word32 Word32 [Word32] | 170 |
LOOKUPSWITCH Word8 Word32 Word32 [(Word32, Word32)] | 171 |
IRETURN | 172 |
LRETURN | 173 |
FRETURN | 174 |
DRETURN | 175 |
ARETURN | 176 |
RETURN | 177 |
GETSTATIC Word16 | 178 |
PUTSTATIC Word16 | 179 |
GETFIELD Word16 | 180 |
PUTFIELD Word16 | 181 |
INVOKEVIRTUAL Word16 | 182 |
INVOKESPECIAL Word16 | 183 |
INVOKESTATIC Word16 | 184 |
INVOKEINTERFACE Word16 Word8 | 185 |
NEW Word16 | 187 |
NEWARRAY Word8 | 188, see |
ANEWARRAY Word16 | 189 |
ARRAYLENGTH | 190 |
ATHROW | 191 |
CHECKCAST Word16 | 192 |
INSTANCEOF Word16 | 193 |
MONITORENTER | 194 |
MONITOREXIT | 195 |
WIDE Word8 Instruction | 196 |
MULTINANEWARRAY Word16 Word8 | 197 |
IFNULL Word16 | 198 |
IFNONNULL Word16 | 199 |
GOTO_W Word32 | 200 |
JSR_W Word32 | 201 |
Eq Instruction | |
Show Instruction | |
BinaryState Integer Instruction |
JVM array type (primitive types)
Enum ArrayType | |
Eq ArrayType | |
Show ArrayType | |
BinaryState Integer ArrayType |
data CodeException Source
Exception descriptor
CodeException | |
|
Eq CodeException | |
Show CodeException | |
BinaryState Integer CodeException |
Format of Code method attribute.
Code | |
|
Eq Code | |
Show Code | |
BinaryState Integer Code |
Immediate constant. Corresponding value will be added to base opcode.
Comparation operation type. Not all CMP instructions support all operations.
atype2byte :: ArrayType -> Word8Source
encodeInstructions :: [Instruction] -> ByteStringSource
Encode list of instructions
encodeMethod :: Code -> ByteStringSource
Encode Java method
decodeMethod :: ByteString -> CodeSource
Decode Java method