JVM
opcodes.h
Go to the documentation of this file.
1
#ifndef OPCODES_H
2
#define OPCODES_H
3
4
#include <stdint.h>
5
6
enum
Opcodes
{
7
opcode_nop
= 0x00,
opcode_aconst_null
= 0x01,
opcode_iconst_m1
= 0x02,
8
opcode_iconst_0
= 0x03,
opcode_iconst_1
= 0x04,
opcode_iconst_2
= 0x05,
9
opcode_iconst_3
= 0x06,
opcode_iconst_4
= 0x07,
opcode_iconst_5
= 0x08,
10
opcode_lconst_0
= 0x09,
opcode_lconst_1
= 0x0A,
opcode_fconst_0
= 0x0B,
11
opcode_fconst_1
= 0x0C,
opcode_fconst_2
= 0x0D,
opcode_dconst_0
= 0x0E,
12
opcode_dconst_1
= 0x0F,
opcode_bipush
= 0x10,
opcode_sipush
= 0x11,
13
opcode_ldc
= 0x12,
opcode_ldc_w
= 0x13,
opcode_ldc2_w
= 0x14,
14
opcode_iload
= 0x15,
opcode_lload
= 0x16,
opcode_fload
= 0x17,
15
opcode_dload
= 0x18,
opcode_aload
= 0x19,
opcode_iload_0
= 0x1A,
16
opcode_iload_1
= 0x1B,
opcode_iload_2
= 0x1C,
opcode_iload_3
= 0x1D,
17
opcode_lload_0
= 0x1E,
opcode_lload_1
= 0x1F,
opcode_lload_2
= 0x20,
18
opcode_lload_3
= 0x21,
opcode_fload_0
= 0x22,
opcode_fload_1
= 0x23,
19
opcode_fload_2
= 0x24,
opcode_fload_3
= 0x25,
opcode_dload_0
= 0x26,
20
opcode_dload_1
= 0x27,
opcode_dload_2
= 0x28,
opcode_dload_3
= 0x29,
21
opcode_aload_0
= 0x2A,
opcode_aload_1
= 0x2B,
opcode_aload_2
= 0x2C,
22
opcode_aload_3
= 0x2D,
opcode_iaload
= 0x2E,
opcode_laload
= 0x2F,
23
opcode_faload
= 0x30,
opcode_daload
= 0x31,
opcode_aaload
= 0x32,
24
opcode_baload
= 0x33,
opcode_caload
= 0x34,
opcode_saload
= 0x35,
25
opcode_istore
= 0x36,
opcode_lstore
= 0x37,
opcode_fstore
= 0x38,
26
opcode_dstore
= 0x39,
opcode_astore
= 0x3A,
opcode_istore_0
= 0x3B,
27
opcode_istore_1
= 0x3C,
opcode_istore_2
= 0x3D,
opcode_istore_3
= 0x3E,
28
opcode_lstore_0
= 0x3F,
opcode_lstore_1
= 0x40,
opcode_lstore_2
= 0x41,
29
opcode_lstore_3
= 0x42,
opcode_fstore_0
= 0x43,
opcode_fstore_1
= 0x44,
30
opcode_fstore_2
= 0x45,
opcode_fstore_3
= 0x46,
opcode_dstore_0
= 0x47,
31
opcode_dstore_1
= 0x48,
opcode_dstore_2
= 0x49,
opcode_dstore_3
= 0x4A,
32
opcode_astore_0
= 0x4B,
opcode_astore_1
= 0x4C,
opcode_astore_2
= 0x4D,
33
opcode_astore_3
= 0x4E,
opcode_iastore
= 0x4F,
opcode_lastore
= 0x50,
34
opcode_fastore
= 0x51,
opcode_dastore
= 0x52,
opcode_aastore
= 0x53,
35
opcode_bastore
= 0x54,
opcode_castore
= 0x55,
opcode_sastore
= 0x56,
36
opcode_pop
= 0x57,
opcode_pop2
= 0x58,
opcode_dup
= 0x59,
37
opcode_dup_x1
= 0x5A,
opcode_dup_x2
= 0x5B,
opcode_dup2
= 0x5C,
38
opcode_dup2_x1
= 0x5D,
opcode_dup2_x2
= 0x5E,
opcode_swap
= 0x5F,
39
opcode_iadd
= 0x60,
opcode_ladd
= 0x61,
opcode_fadd
= 0x62,
40
opcode_dadd
= 0x63,
opcode_isub
= 0x64,
opcode_lsub
= 0x65,
41
opcode_fsub
= 0x66,
opcode_dsub
= 0x67,
opcode_imul
= 0x68,
42
opcode_lmul
= 0x69,
opcode_fmul
= 0x6A,
opcode_dmul
= 0x6B,
43
opcode_idiv
= 0x6C,
opcode_ldiv
= 0x6D,
opcode_fdiv
= 0x6E,
44
opcode_ddiv
= 0x6F,
opcode_irem
= 0x70,
opcode_lrem
= 0x71,
45
opcode_frem
= 0x72,
opcode_drem
= 0x73,
opcode_ineg
= 0x74,
46
opcode_lneg
= 0x75,
opcode_fneg
= 0x76,
opcode_dneg
= 0x77,
47
opcode_ishl
= 0x78,
opcode_lshl
= 0x79,
opcode_ishr
= 0x7A,
48
opcode_lshr
= 0x7B,
opcode_iushr
= 0x7C,
opcode_lushr
= 0x7D,
49
opcode_iand
= 0x7E,
opcode_land
= 0x7F,
opcode_ior
= 0x80,
50
opcode_lor
= 0x81,
opcode_ixor
= 0x82,
opcode_lxor
= 0x83,
51
opcode_iinc
= 0x84,
opcode_i2l
= 0x85,
opcode_i2f
= 0x86,
52
opcode_i2d
= 0x87,
opcode_l2i
= 0x88,
opcode_l2f
= 0x89,
53
opcode_l2d
= 0x8A,
opcode_f2i
= 0x8B,
opcode_f2l
= 0x8C,
54
opcode_f2d
= 0x8D,
opcode_d2i
= 0x8E,
opcode_d2l
= 0x8F,
55
opcode_d2f
= 0x90,
opcode_i2b
= 0x91,
opcode_i2c
= 0x92,
56
opcode_i2s
= 0x93,
opcode_lcmp
= 0x94,
opcode_fcmpl
= 0x95,
57
opcode_fcmpg
= 0x96,
opcode_dcmpl
= 0x97,
opcode_dcmpg
= 0x98,
58
opcode_ifeq
= 0x99,
opcode_ifne
= 0x9A,
opcode_iflt
= 0x9B,
59
opcode_ifge
= 0x9C,
opcode_ifgt
= 0x9D,
opcode_ifle
= 0x9E,
60
opcode_if_icmpeq
= 0x9F,
opcode_if_icmpne
= 0xA0,
opcode_if_icmplt
= 0xA1,
61
opcode_if_icmpge
= 0xA2,
opcode_if_icmpgt
= 0xA3,
opcode_if_icmple
= 0xA4,
62
opcode_if_acmpeq
= 0xA5,
opcode_if_acmpne
= 0xA6,
opcode_goto
= 0xA7,
63
opcode_jsr
= 0xA8,
opcode_ret
= 0xA9,
opcode_tableswitch
= 0xAA,
64
opcode_lookupswitch
= 0xAB,
opcode_ireturn
= 0xAC,
opcode_lreturn
= 0xAD,
65
opcode_freturn
= 0xAE,
opcode_dreturn
= 0xAF,
opcode_areturn
= 0xB0,
66
opcode_return
= 0xB1,
opcode_getstatic
= 0xB2,
opcode_putstatic
= 0xB3,
67
opcode_getfield
= 0xB4,
opcode_putfield
= 0xB5,
opcode_invokevirtual
= 0xB6,
68
opcode_invokespecial
= 0xB7,
opcode_invokestatic
= 0xB8,
opcode_invokeinterface
= 0xB9,
69
opcode_invokedynamic
= 0xBA,
opcode_new
= 0xBB,
opcode_newarray
= 0xBC,
70
opcode_anewarray
= 0xBD,
opcode_arraylength
= 0xBE,
opcode_athrow
= 0xBF,
71
opcode_checkcast
= 0xC0,
opcode_instanceof
= 0xC1,
opcode_monitorenter
= 0xC2,
72
opcode_monitorexit
= 0xC3,
opcode_wide
= 0xC4,
opcode_multianewarray
= 0xC5,
73
opcode_ifnull
= 0xC6,
opcode_ifnonnull
= 0xC7,
opcode_goto_w
= 0xC8,
74
opcode_jsr_w
= 0xC9,
75
76
// Reserved
77
opcode_breakpoint
= 0xCA,
opcode_impdep1
= 0xFE,
opcode_impdep2
= 0xFF
78
};
79
80
typedef
enum
Opcode_newarray_type
{
81
T_BOOLEAN
= 4,
82
T_CHAR
,
83
T_FLOAT
,
84
T_DOUBLE
,
85
T_BYTE
,
86
T_SHORT
,
87
T_INT
,
88
T_LONG
89
}
Opcode_newarray_type
;
90
91
const
char
*
decodeOpcodeNewarrayType
(uint8_t type);
92
const
char
*
getOpcodeMnemonic
(uint8_t opcode);
93
94
#endif // OPCODES_H
opcode_i2c
Definition:
opcodes.h:55
opcode_lload_3
Definition:
opcodes.h:18
opcode_nop
Definition:
opcodes.h:7
opcode_ifgt
Definition:
opcodes.h:59
opcode_jsr_w
Definition:
opcodes.h:74
opcode_if_acmpeq
Definition:
opcodes.h:62
T_SHORT
Definition:
opcodes.h:86
opcode_fmul
Definition:
opcodes.h:42
opcode_lcmp
Definition:
opcodes.h:56
opcode_dup2_x2
Definition:
opcodes.h:38
opcode_aload_2
Definition:
opcodes.h:21
opcode_fload_0
Definition:
opcodes.h:18
opcode_fneg
Definition:
opcodes.h:46
opcode_d2i
Definition:
opcodes.h:54
T_DOUBLE
Definition:
opcodes.h:84
opcode_ret
Definition:
opcodes.h:63
opcode_lshl
Definition:
opcodes.h:47
opcode_breakpoint
Definition:
opcodes.h:77
opcode_checkcast
Definition:
opcodes.h:71
opcode_dload_1
Definition:
opcodes.h:20
opcode_dmul
Definition:
opcodes.h:42
opcode_ixor
Definition:
opcodes.h:50
opcode_ifge
Definition:
opcodes.h:59
opcode_iconst_4
Definition:
opcodes.h:9
opcode_monitorenter
Definition:
opcodes.h:71
opcode_astore_0
Definition:
opcodes.h:32
opcode_istore_0
Definition:
opcodes.h:26
opcode_fstore_0
Definition:
opcodes.h:29
opcode_fcmpl
Definition:
opcodes.h:56
Opcode_newarray_type
Opcode_newarray_type
Definition:
opcodes.h:80
opcode_lstore_0
Definition:
opcodes.h:28
T_INT
Definition:
opcodes.h:87
opcode_fload_1
Definition:
opcodes.h:18
opcode_if_icmpne
Definition:
opcodes.h:60
opcode_goto_w
Definition:
opcodes.h:73
opcode_dastore
Definition:
opcodes.h:34
opcode_lxor
Definition:
opcodes.h:50
opcode_lstore_1
Definition:
opcodes.h:28
opcode_iconst_0
Definition:
opcodes.h:8
opcode_f2d
Definition:
opcodes.h:54
opcode_lstore_2
Definition:
opcodes.h:28
opcode_arraylength
Definition:
opcodes.h:70
opcode_dload
Definition:
opcodes.h:15
opcode_getstatic
Definition:
opcodes.h:66
opcode_isub
Definition:
opcodes.h:40
opcode_invokevirtual
Definition:
opcodes.h:67
opcode_iconst_3
Definition:
opcodes.h:9
opcode_fadd
Definition:
opcodes.h:39
opcode_lload
Definition:
opcodes.h:14
opcode_newarray
Definition:
opcodes.h:69
opcode_ishr
Definition:
opcodes.h:47
opcode_freturn
Definition:
opcodes.h:65
opcode_l2d
Definition:
opcodes.h:53
opcode_invokedynamic
Definition:
opcodes.h:69
opcode_goto
Definition:
opcodes.h:62
opcode_saload
Definition:
opcodes.h:24
opcode_l2i
Definition:
opcodes.h:52
opcode_ishl
Definition:
opcodes.h:47
opcode_monitorexit
Definition:
opcodes.h:72
opcode_dup
Definition:
opcodes.h:36
opcode_idiv
Definition:
opcodes.h:43
opcode_aload_3
Definition:
opcodes.h:22
opcode_ifne
Definition:
opcodes.h:58
opcode_dneg
Definition:
opcodes.h:46
opcode_ireturn
Definition:
opcodes.h:64
opcode_ladd
Definition:
opcodes.h:39
opcode_dstore_3
Definition:
opcodes.h:31
opcode_instanceof
Definition:
opcodes.h:71
opcode_iand
Definition:
opcodes.h:49
opcode_lmul
Definition:
opcodes.h:42
opcode_lreturn
Definition:
opcodes.h:64
opcode_ddiv
Definition:
opcodes.h:44
opcode_laload
Definition:
opcodes.h:22
opcode_istore_1
Definition:
opcodes.h:27
opcode_land
Definition:
opcodes.h:49
opcode_fload_2
Definition:
opcodes.h:19
opcode_jsr
Definition:
opcodes.h:63
opcode_astore
Definition:
opcodes.h:26
opcode_ldiv
Definition:
opcodes.h:43
opcode_drem
Definition:
opcodes.h:45
opcode_dconst_1
Definition:
opcodes.h:12
opcode_lconst_1
Definition:
opcodes.h:10
opcode_aload
Definition:
opcodes.h:15
opcode_dup2
Definition:
opcodes.h:37
opcode_dconst_0
Definition:
opcodes.h:11
opcode_baload
Definition:
opcodes.h:24
opcode_if_icmpgt
Definition:
opcodes.h:61
opcode_f2i
Definition:
opcodes.h:53
opcode_dload_3
Definition:
opcodes.h:20
opcode_iconst_1
Definition:
opcodes.h:8
opcode_fastore
Definition:
opcodes.h:34
opcode_lrem
Definition:
opcodes.h:44
opcode_if_icmpge
Definition:
opcodes.h:61
opcode_lshr
Definition:
opcodes.h:48
opcode_i2s
Definition:
opcodes.h:56
opcode_dup_x1
Definition:
opcodes.h:37
opcode_aconst_null
Definition:
opcodes.h:7
opcode_aaload
Definition:
opcodes.h:23
opcode_if_icmple
Definition:
opcodes.h:61
opcode_fstore_2
Definition:
opcodes.h:30
T_LONG
Definition:
opcodes.h:88
opcode_lstore
Definition:
opcodes.h:25
T_BYTE
Definition:
opcodes.h:85
opcode_castore
Definition:
opcodes.h:35
opcode_lload_2
Definition:
opcodes.h:17
opcode_dstore_0
Definition:
opcodes.h:30
opcode_iload
Definition:
opcodes.h:14
opcode_i2f
Definition:
opcodes.h:51
opcode_impdep2
Definition:
opcodes.h:77
opcode_iinc
Definition:
opcodes.h:51
opcode_f2l
Definition:
opcodes.h:53
opcode_lookupswitch
Definition:
opcodes.h:64
opcode_fdiv
Definition:
opcodes.h:43
opcode_fstore_1
Definition:
opcodes.h:29
opcode_astore_1
Definition:
opcodes.h:32
decodeOpcodeNewarrayType
const char * decodeOpcodeNewarrayType(uint8_t type)
Return the Opcode_newarray_type type as a String.
Definition:
opcodes.c:11
opcode_invokespecial
Definition:
opcodes.h:68
opcode_anewarray
Definition:
opcodes.h:70
opcode_new
Definition:
opcodes.h:69
T_BOOLEAN
Definition:
opcodes.h:81
opcode_fsub
Definition:
opcodes.h:41
opcode_dsub
Definition:
opcodes.h:41
opcode_bastore
Definition:
opcodes.h:35
getOpcodeMnemonic
const char * getOpcodeMnemonic(uint8_t opcode)
The instruction's mnemonic is its name. Its opcode is its numeric representation which specifies the ...
Definition:
opcodes.c:30
opcode_lload_0
Definition:
opcodes.h:17
opcode_if_icmplt
Definition:
opcodes.h:60
opcode_ifle
Definition:
opcodes.h:59
opcode_d2f
Definition:
opcodes.h:55
opcode_iconst_2
Definition:
opcodes.h:8
Opcodes
Opcodes
Definition:
opcodes.h:6
opcode_ior
Definition:
opcodes.h:49
opcode_fconst_0
Definition:
opcodes.h:10
opcode_if_icmpeq
Definition:
opcodes.h:60
opcode_fstore_3
Definition:
opcodes.h:30
opcode_dcmpl
Definition:
opcodes.h:57
opcode_ldc
Definition:
opcodes.h:13
opcode_lsub
Definition:
opcodes.h:40
opcode_bipush
Definition:
opcodes.h:12
opcode_istore
Definition:
opcodes.h:25
opcode_irem
Definition:
opcodes.h:44
opcode_ldc2_w
Definition:
opcodes.h:13
opcode_iload_3
Definition:
opcodes.h:16
opcode_lstore_3
Definition:
opcodes.h:29
opcode_iload_0
Definition:
opcodes.h:15
opcode_lastore
Definition:
opcodes.h:33
opcode_areturn
Definition:
opcodes.h:65
opcode_swap
Definition:
opcodes.h:38
opcode_aload_0
Definition:
opcodes.h:21
opcode_athrow
Definition:
opcodes.h:70
opcode_fconst_2
Definition:
opcodes.h:11
opcode_aload_1
Definition:
opcodes.h:21
opcode_invokeinterface
Definition:
opcodes.h:68
opcode_i2b
Definition:
opcodes.h:55
opcode_caload
Definition:
opcodes.h:24
opcode_fstore
Definition:
opcodes.h:25
opcode_lushr
Definition:
opcodes.h:48
opcode_fconst_1
Definition:
opcodes.h:11
opcode_pop
Definition:
opcodes.h:36
opcode_invokestatic
Definition:
opcodes.h:68
opcode_pop2
Definition:
opcodes.h:36
opcode_istore_2
Definition:
opcodes.h:27
opcode_ineg
Definition:
opcodes.h:45
opcode_aastore
Definition:
opcodes.h:34
opcode_iushr
Definition:
opcodes.h:48
opcode_if_acmpne
Definition:
opcodes.h:62
opcode_astore_2
Definition:
opcodes.h:32
opcode_fload_3
Definition:
opcodes.h:19
opcode_wide
Definition:
opcodes.h:72
opcode_fcmpg
Definition:
opcodes.h:57
opcode_fload
Definition:
opcodes.h:14
opcode_dstore_1
Definition:
opcodes.h:31
opcode_daload
Definition:
opcodes.h:23
opcode_ifnull
Definition:
opcodes.h:73
opcode_dadd
Definition:
opcodes.h:40
opcode_putstatic
Definition:
opcodes.h:66
opcode_ifeq
Definition:
opcodes.h:58
opcode_tableswitch
Definition:
opcodes.h:63
opcode_iload_2
Definition:
opcodes.h:16
opcode_iconst_m1
Definition:
opcodes.h:7
T_FLOAT
Definition:
opcodes.h:83
opcode_return
Definition:
opcodes.h:66
opcode_dup_x2
Definition:
opcodes.h:37
opcode_dreturn
Definition:
opcodes.h:65
opcode_astore_3
Definition:
opcodes.h:33
opcode_dstore_2
Definition:
opcodes.h:31
opcode_lload_1
Definition:
opcodes.h:17
opcode_istore_3
Definition:
opcodes.h:27
opcode_iflt
Definition:
opcodes.h:58
opcode_sastore
Definition:
opcodes.h:35
opcode_faload
Definition:
opcodes.h:23
opcode_iaload
Definition:
opcodes.h:22
opcode_imul
Definition:
opcodes.h:41
opcode_dstore
Definition:
opcodes.h:26
opcode_l2f
Definition:
opcodes.h:52
opcode_iload_1
Definition:
opcodes.h:16
opcode_iconst_5
Definition:
opcodes.h:9
opcode_dcmpg
Definition:
opcodes.h:57
opcode_getfield
Definition:
opcodes.h:67
opcode_d2l
Definition:
opcodes.h:54
opcode_iastore
Definition:
opcodes.h:33
opcode_lor
Definition:
opcodes.h:50
opcode_sipush
Definition:
opcodes.h:12
opcode_lneg
Definition:
opcodes.h:46
opcode_i2d
Definition:
opcodes.h:52
opcode_frem
Definition:
opcodes.h:45
opcode_putfield
Definition:
opcodes.h:67
opcode_iadd
Definition:
opcodes.h:39
opcode_ifnonnull
Definition:
opcodes.h:73
opcode_dload_0
Definition:
opcodes.h:19
opcode_lconst_0
Definition:
opcodes.h:10
opcode_impdep1
Definition:
opcodes.h:77
opcode_i2l
Definition:
opcodes.h:51
T_CHAR
Definition:
opcodes.h:82
opcode_dload_2
Definition:
opcodes.h:20
opcode_multianewarray
Definition:
opcodes.h:72
opcode_ldc_w
Definition:
opcodes.h:13
opcode_dup2_x1
Definition:
opcodes.h:38
src
opcodes.h
Generated on Mon Apr 9 2018 14:35:56 for JVM by
1.8.12