-
Notifications
You must be signed in to change notification settings - Fork 0
/
opcodes.c
81 lines (79 loc) · 3.51 KB
/
opcodes.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "opcodes.h"
char* strings_opcodes [] = {"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", "sipush", "ldc", "ldc_w",
"ldc2_w", "iload", "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", "iload_3",
"lload_0", "lload_1", "lload_2", "lload_3", "fload_0", "fload_1", "fload_2", "fload_3", "dload_0", "dload_1",
"dload_2", "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", "laload", "faload", "daload",
"aaload", "baload", "caload", "saload", "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
"istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1", "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
"fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", "astore_0", "astore_1", "astore_2", "astore_3", "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", "i2l", "i2f", "i2d", "l2i", "l2f", "l2d", "f2i",
"f2l", "f2d", "d2i", "d2l", "d2f", "i2b", "i2c", "i2s", "lcmp", "fcmpl",
"fcmpg", "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", "if_icmpeq",
"if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt", "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
"tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", "dreturn", "areturn", "return", "getstatic", "putstatic",
"getfield", "putfield", "invokevirtual", "invokespecial", "invokestatic", "invokeinterface", "invokedynamic", "new", "newarray", "anewarray",
"arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
"goto_w", "jsr_w", "breakpoint"};
int opargs[N_OPS] = {
[OP_if_icmpeq] = 2,
[OP_if_icmpne] = 2,
[OP_if_icmplt] = 2,
[OP_if_icmpge] = 2,
[OP_if_icmpgt] = 2,
[OP_if_icmple] = 2,
[OP_if_acmpne] = 2,
[OP_if_acmpeq] = 2,
[OP_ldc] = 1,
[OP_iload] = 1,
[OP_lload] = 1,
[OP_fload] = 1,
[OP_dload] = 1,
[OP_aload] = 1,
[OP_istore] = 1,
[OP_lstore] = 1,
[OP_fstore] = 1,
[OP_dstore] = 1,
[OP_astore] = 1,
[OP_ret] = 1,
[OP_bipush] = 1,
[OP_newarray] = 1,
[OP_ldc_w] = 2,
[OP_ldc2_w] = 2,
[OP_getfield] = 2,
[OP_putfield] = 2,
[OP_invokevirtual] = 2,
[OP_invokespecial] = 2,
[OP_invokestatic] = 2,
[OP_new] = 2,
[OP_anewarray] = 2,
[OP_checkcast] = 2,
[OP_instanceof] = 2,
[OP_iinc] = 2,
[OP_sipush] = 2,
[OP_goto] = 2,
[OP_jsr] = 2,
[OP_ifnull] = 2,
[OP_ifnonnull] = 2,
[OP_ifeq] = 2,
[OP_ifne] = 2,
[OP_iflt] = 2,
[OP_ifge] = 2,
[OP_ifgt] = 2,
[OP_ifle] = 2,
[OP_multianewarray] = 3,
/*[OP_wide] = 3,*/
[OP_invokeinterface] = 4,
[OP_invokedynamic] = 4,
[OP_goto_w] = 4,
[OP_jsr_w] = 4,
/*[OP_lookupswitch] = 8,
[OP_tableswitch] = 16,*/
[OP_getstatic] = 2,
[OP_putstatic] = 2,
};