| Safe Haskell | None |
|---|
JVM.Assembler
Description
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.
Constructors
| 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 |
Instances
| Eq Instruction | |
| Show Instruction | |
| BinaryState Integer Instruction |
JVM array type (primitive types)
Instances
| Enum ArrayType | |
| Eq ArrayType | |
| Show ArrayType | |
| BinaryState Integer ArrayType |
data CodeException Source
Exception descriptor
Constructors
| CodeException | |
Fields
| |
Instances
| Eq CodeException | |
| Show CodeException | |
| BinaryState Integer CodeException |
Format of Code method attribute.
Constructors
| Code | |
Fields
| |
Instances
| 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