From 384d4c77948eb98ea6604bb0b10c1a19ef3b5c74 Mon Sep 17 00:00:00 2001 From: Nik Date: Fri, 27 Dec 2024 01:07:36 +0100 Subject: [PATCH] disassemblers: Added half of the JVM instructions --- disassemblers/jvm.json | 473 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 473 insertions(+) create mode 100644 disassemblers/jvm.json diff --git a/disassemblers/jvm.json b/disassemblers/jvm.json new file mode 100644 index 0000000..8825631 --- /dev/null +++ b/disassemblers/jvm.json @@ -0,0 +1,473 @@ +{ + "name": "Java Virtual Machine (JVM)", + "includes": [], + "options": [], + "opcodes": [ + { + "mask": "0011'0010", + "mnemonic": "aaload", + "format": "" + }, + { + "mask": "0101'0011", + "mnemonic": "aastore", + "format": "" + }, + { + "mask": "0000'0001", + "mnemonic": "aconst_null", + "format": "" + }, + { + "mask": "0001'1001 IIII'IIII", + "mnemonic": "aload", + "format": "#{I}" + }, + { + "mask": "0010'1010", + "mnemonic": "aload_0", + "format": "" + }, + { + "mask": "0010'1011", + "mnemonic": "aload_1", + "format": "" + }, + { + "mask": "0010'1100", + "mnemonic": "aload_2", + "format": "" + }, + { + "mask": "0010'1101", + "mnemonic": "aload_3", + "format": "" + }, + { + "mask": "1011'1101 IIII'IIII IIII'IIII", + "mnemonic": "anewarray", + "format": "#{I}" + }, + { + "mask": "areturn", + "mnemonic": "1011'0000", + "format": "" + }, + { + "mask": "1011'1110", + "mnemonic": "arraylength", + "format": "" + }, + { + "mask": "0011'1010 IIII'IIII", + "mnemonic": "astore", + "format": "#{I}" + }, + { + "mask": "0100'1011", + "mnemonic": "astore_0", + "format": "" + }, + { + "mask": "0100'1100", + "mnemonic": "astore_1", + "format": "" + }, + { + "mask": "0100'1101", + "mnemonic": "astore_2", + "format": "" + }, + { + "mask": "0100'1110", + "mnemonic": "astore_3", + "format": "" + }, + { + "mask": "athrow", + "mnemonic": "1011'1111", + "format": "" + }, + { + "mask": "0011'0011", + "mnemonic": "baload", + "format": "" + }, + { + "mask": "0101'0100", + "mnemonic": "bastore", + "format": "" + }, + { + "mask": "0001'0000 BBBB'BBBB", + "mnemonic": "bipush", + "format": "0x{B:02X}" + }, + { + "mask": "1100'1010", + "mnemonic": "breakpoint", + "format": "" + }, + { + "mask": "0011'0100", + "mnemonic": "caload", + "format": "" + }, + { + "mask": "0101'0101", + "mnemonic": "castore", + "format": "" + }, + { + "mask": "1100'0000 IIII'IIII IIII'IIII", + "mnemonic": "checkcast", + "format": "#{I}" + }, + { + "mask": "1011'0000", + "mnemonic": "d2f", + "format": "" + }, + { + "mask": "1000'1110", + "mnemonic": "d2i", + "format": "" + }, + { + "mask": "1000'1111", + "mnemonic": "d2l", + "format": "" + }, + { + + "mask": "0110'0011", + "mnemonic": "dadd", + "format": "" + }, + { + "mask": "0011'0001", + "mnemonic": "daload", + "format": "" + }, + { + "mask": "0101'0010", + "mnemonic": "dastore", + "format": "" + }, + { + "mask": "1001'1000", + "mnemonic": "dcmpg", + "format": "" + }, + { + "mask": "1001'0111", + "mnemonic": "dcmpl", + "format": "" + }, + { + "mask": "0000'1110", + "mnemonic": "dconst_0", + "format": "" + }, + { + "mask": "0000'1111", + "mnemonic": "dcosnt_1", + "format": "" + }, + { + "mask": "0110'1111", + "mnemonic": "ddiv", + "format": "" + }, + { + "mask": "0001'1000 IIII'IIII", + "mnemonic": "dload", + "format": "#{I}" + }, + { + "mask": "0010'0110", + "mnemonic": "dload_0", + "format": "" + }, + { + "mask": "0010'0111", + "mnemonic": "dload_1", + "format": "" + }, + { + "mask": "0010'1000", + "mnemonic": "dload_2", + "format": "" + }, + { + "mask": "0010'1001", + "mnemonic": "dload_3", + "format": "" + }, + { + "mask": "0110'1011", + "mnemonic": "dmul", + "format": "" + }, + { + "mask": "0111'0111", + "mnemonic": "dneg", + "format": "" + }, + { + "mask": "0111'0011", + "mnemonic": "drem", + "format": "" + }, + { + "mask": "1010'1111", + "mnemonic": "dreturn", + "format": "" + }, + { + "mask": "0011'1001 IIII'IIII", + "mnemonic": "dstore", + "format": "#{I}" + }, + { + "mask": "0100'0111", + "mnemonic": "dstore_0", + "format": "" + }, + { + "mask": "0100'1000", + "mnemonic": "dstore_1", + "format": "" + }, + { + "mask": "0100'1001", + "mnemonic": "dstore_2", + "format": "" + }, + { + "mask": "0100'1010", + "mnemonic": "dstore_3", + "format": "" + }, + { + "mask": "0110'0111", + "mnemonic": "dsub", + "format": "" + }, + { + "mask": "0101'1001", + "mnemonic": "dup", + "format": "" + }, + { + "mask": "0101'1010", + "mnemonic": "dup_x1", + "format": "" + }, + { + "mask": "0101'1011", + "mnemonic": "dup_x2", + "format": "" + }, + { + "mask": "0101'1100", + "mnemonic": "dup2", + "format": "" + }, + { + "mask": "0101'1101", + "mnemonic": "dup2_x1", + "format": "" + }, + { + "mask": "0101'1110", + "mnemonic": "dup2_x2", + "format": "" + }, + { + "mask": "1000'1101", + "mnemonic": "f2d", + "format": "" + }, + { + "mask": "1000'1011", + "mnemonic": "f2i", + "format": "" + }, + { + "mask": "1000'1100", + "mnemonic": "f2l", + "format": "" + }, + { + "mask": "0110'0010", + "mnemonic": "fadd", + "format": "" + }, + { + "mask": "0011'0000", + "mnemonic": "faload", + "format": "" + }, + { + "mask": "0101'0001", + "mnemonic": "fastore", + "format": "" + }, + { + "mask": "1001'0110", + "mnemonic": "fcmpg", + "format": "" + }, + { + "mask": "1001'0101", + "mnemonic": "fcmpl", + "format": "" + }, + { + "mask": "0000'1011", + "mnemonic": "fconst_0", + "format": "" + }, + { + "mask": "0000'1100", + "mnemonic": "fconst_1", + "format": "" + }, + { + "mask": "0000'1101", + "mnemonic": "fconst_2", + "format": "" + }, + { + "mask": "0110'1110", + "mnemonic": "fdiv", + "format": "" + }, + { + "mask": "0001'0111 IIII'IIII", + "mnemonic": "fload", + "format": "#{I}" + }, + { + "mask": "0010'0010", + "mnemonic": "fload_0", + "format": "" + }, + { + "mask": "0010'0011", + "mnemonic": "fload_1", + "format": "" + }, + { + "mask": "0010'0100", + "mnemonic": "fload_2", + "format": "" + }, + { + "mask": "0010'0101", + "mnemonic": "fload_3", + "format": "" + }, + { + "mask": "0110'1010", + "mnemonic": "fmul", + "format": "" + }, + { + "mask": "0111'0110", + "mnemonic": "fneg", + "format": "" + }, + { + "mask": "0111'0010", + "mnemonic": "frem", + "format": "" + }, + { + "mask": "1010'1110", + "mnemonic": "freturn", + "format": "" + }, + { + "mask": "0011'1000 IIII'IIII", + "mnemonic": "fstore", + "format": "#{I}" + }, + { + "mask": "0100'0011", + "mnemonic": "fstore_0", + "format": "" + }, + { + "mask": "0100'0100", + "mnemonic": "fstore_1", + "format": "" + }, + { + "mask": "0100'0101", + "mnemonic": "fstore_2", + "format": "" + }, + { + "mask": "0100'0110", + "mnemonic": "fstore_3", + "format": "" + }, + { + "mask": "0110'0110", + "mnemonic": "fsub", + "format": "" + }, + { + "mask": "1011'0100 IIII'IIII IIII'IIII", + "mnemonic": "getfield", + "format": "#{I}" + }, + { + "mask": "1011'0010 IIII'IIII IIII'IIII", + "mnemonic": "getstatic", + "format": "#{I}" + }, + { + "mask": "1010'0111 BBBB'BBBB BBBB'BBBB", + "mnemonic": "goto", + "format": "0x{B:04X}" + }, + { + "mask": "1100'1000 BBBB'BBBB BBBB'BBBB BBBB'BBBB BBBB'BBBB", + "mnemonic": "goto_w", + "format": "0x{B:08X}" + }, + { + "mask": "1001'0001", + "mnemonic": "i2b", + "format": "" + }, + { + "mask": "1001'0010", + "mnemonic": "i2c", + "format": "" + }, + { + "mask": "1000'0111", + "mnemonic": "i2d", + "format": "" + }, + { + "mask": "1000'0110", + "mnemonic": "i2f", + "format": "" + }, + { + "mask": "1000'0101", + "mnemonic": "i2l", + "format": "" + }, + { + "mask": "1001'0011", + "mnemonic": "i2s", + "format": "" + } + ] +} \ No newline at end of file