From 124f869faae3a0f75a3825e6a8e195c17f3c626a Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 16 Oct 2014 23:34:20 +0400 Subject: initial for idea --- .../com/github/junrar/unpack/vm/VMCommands.java | 226 +++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 org.fox.ttcomics/src/main/java/com/github/junrar/unpack/vm/VMCommands.java (limited to 'org.fox.ttcomics/src/main/java/com/github/junrar/unpack/vm/VMCommands.java') diff --git a/org.fox.ttcomics/src/main/java/com/github/junrar/unpack/vm/VMCommands.java b/org.fox.ttcomics/src/main/java/com/github/junrar/unpack/vm/VMCommands.java new file mode 100644 index 0000000..e52911a --- /dev/null +++ b/org.fox.ttcomics/src/main/java/com/github/junrar/unpack/vm/VMCommands.java @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2007 innoSysTec (R) GmbH, Germany. All rights reserved. + * Original author: Edmund Wagner + * Creation date: 31.05.2007 + * + * Source: $HeadURL$ + * Last changed: $LastChangedDate$ + * + * the unrar licence applies to all junrar source and binary distributions + * you are not allowed to use this source to re-create the RAR compression algorithm + * + * Here some html entities which can be used for escaping javadoc tags: + * "&": "&" or "&" + * "<": "<" or "<" + * ">": ">" or ">" + * "@": "@" + */ +package com.github.junrar.unpack.vm; + +/** + * DOCUMENT ME + * + * @author $LastChangedBy$ + * @version $LastChangedRevision$ + */ +public enum VMCommands { + VM_MOV(0), VM_CMP(1), VM_ADD(2), VM_SUB(3), VM_JZ(4), VM_JNZ(5), VM_INC(6), VM_DEC( + 7), VM_JMP(8), VM_XOR(9), VM_AND(10), VM_OR(11), VM_TEST(12), VM_JS( + 13), VM_JNS(14), VM_JB(15), VM_JBE(16), VM_JA(17), VM_JAE(18), VM_PUSH( + 19), VM_POP(20), VM_CALL(21), VM_RET(22), VM_NOT(23), VM_SHL(24), VM_SHR( + 25), VM_SAR(26), VM_NEG(27), VM_PUSHA(28), VM_POPA(29), VM_PUSHF(30), VM_POPF( + 31), VM_MOVZX(32), VM_MOVSX(33), VM_XCHG(34), VM_MUL(35), VM_DIV(36), VM_ADC( + 37), VM_SBB(38), VM_PRINT(39), + + // #ifdef VM_OPTIMIZE + VM_MOVB(40), VM_MOVD(41), VM_CMPB(42), VM_CMPD(43), + + VM_ADDB(44), VM_ADDD(45), VM_SUBB(46), VM_SUBD(47), VM_INCB(48), VM_INCD(49), VM_DECB( + 50), VM_DECD(51), VM_NEGB(52), VM_NEGD(53), + // #endif*/ + + VM_STANDARD(54); + + private int vmCommand; + + private VMCommands(int vmCommand) { + this.vmCommand = vmCommand; + } + + public int getVMCommand() { + return vmCommand; + } + + public boolean equals(int vmCommand) { + return this.vmCommand == vmCommand; + } + + public static VMCommands findVMCommand(int vmCommand) { + if (VM_MOV.equals(vmCommand)) { + return VM_MOV; + } + if (VM_CMP.equals(vmCommand)) { + return VM_CMP; + } + if (VM_ADD.equals(vmCommand)) { + return VM_ADD; + } + if (VM_SUB.equals(vmCommand)) { + return VM_SUB; + } + if (VM_JZ.equals(vmCommand)) { + return VM_JZ; + } + if (VM_JNZ.equals(vmCommand)) { + return VM_JNZ; + } + if (VM_INC.equals(vmCommand)) { + return VM_INC; + } + if (VM_DEC.equals(vmCommand)) { + return VM_DEC; + } + if (VM_JMP.equals(vmCommand)) { + return VM_JMP; + } + if (VM_XOR.equals(vmCommand)) { + return VM_XOR; + } + if (VM_AND.equals(vmCommand)) { + return VM_AND; + } + if (VM_OR.equals(vmCommand)) { + return VM_OR; + } + if (VM_TEST.equals(vmCommand)) { + return VM_TEST; + } + if (VM_JS.equals(vmCommand)) { + return VM_JS; + } + if (VM_JNS.equals(vmCommand)) { + return VM_JNS; + } + if (VM_JB.equals(vmCommand)) { + return VM_JB; + } + if (VM_JBE.equals(vmCommand)) { + return VM_JBE; + } + if (VM_JA.equals(vmCommand)) { + return VM_JA; + } + if (VM_JAE.equals(vmCommand)) { + return VM_JAE; + } + if (VM_PUSH.equals(vmCommand)) { + return VM_PUSH; + } + if (VM_POP.equals(vmCommand)) { + return VM_POP; + } + if (VM_CALL.equals(vmCommand)) { + return VM_CALL; + } + if (VM_RET.equals(vmCommand)) { + return VM_RET; + } + if (VM_NOT.equals(vmCommand)) { + return VM_NOT; + } + if (VM_SHL.equals(vmCommand)) { + return VM_SHL; + } + if (VM_SHR.equals(vmCommand)) { + return VM_SHR; + } + if (VM_SAR.equals(vmCommand)) { + return VM_SAR; + } + if (VM_NEG.equals(vmCommand)) { + return VM_NEG; + } + if (VM_PUSHA.equals(vmCommand)) { + return VM_PUSHA; + } + if (VM_POPA.equals(vmCommand)) { + return VM_POPA; + } + if (VM_PUSHF.equals(vmCommand)) { + return VM_PUSHF; + } + if (VM_POPF.equals(vmCommand)) { + return VM_POPF; + } + if (VM_MOVZX.equals(vmCommand)) { + return VM_MOVZX; + } + if (VM_MOVSX.equals(vmCommand)) { + return VM_MOVSX; + } + if (VM_XCHG.equals(vmCommand)) { + return VM_XCHG; + } + if (VM_MUL.equals(vmCommand)) { + return VM_MUL; + } + if (VM_DIV.equals(vmCommand)) { + return VM_DIV; + } + if (VM_ADC.equals(vmCommand)) { + return VM_ADC; + } + if (VM_SBB.equals(vmCommand)) { + return VM_SBB; + } + if (VM_PRINT.equals(vmCommand)) { + return VM_PRINT; + } + if (VM_MOVB.equals(vmCommand)) { + return VM_MOVB; + } + if (VM_MOVD.equals(vmCommand)) { + return VM_MOVD; + } + if (VM_CMPB.equals(vmCommand)) { + return VM_CMPB; + } + if (VM_CMPD.equals(vmCommand)) { + return VM_CMPD; + } + if (VM_ADDB.equals(vmCommand)) { + return VM_ADDB; + } + if (VM_ADDD.equals(vmCommand)) { + return VM_ADDD; + } + if (VM_SUBB.equals(vmCommand)) { + return VM_SUBB; + } + if (VM_SUBD.equals(vmCommand)) { + return VM_SUBD; + } + if (VM_INCB.equals(vmCommand)) { + return VM_INCB; + } + if (VM_INCD.equals(vmCommand)) { + return VM_INCD; + } + if (VM_DECB.equals(vmCommand)) { + return VM_DECB; + } + if (VM_DECD.equals(vmCommand)) { + return VM_DECD; + } + if (VM_NEGB.equals(vmCommand)) { + return VM_NEGB; + } + if (VM_NEGD.equals(vmCommand)) { + return VM_NEGD; + } + if (VM_STANDARD.equals(vmCommand)) { + return VM_STANDARD; + } + return null; + } +} -- cgit v1.2.3