From 663631f0456fcc245dd835889f86541d75161c53 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 28 Aug 2014 20:52:43 +0400 Subject: java-decompiler: post-import cleanup (classes moved) --- .../java/decompiler/code/Instruction.java | 124 +++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 src/org/jetbrains/java/decompiler/code/Instruction.java (limited to 'src/org/jetbrains/java/decompiler/code/Instruction.java') diff --git a/src/org/jetbrains/java/decompiler/code/Instruction.java b/src/org/jetbrains/java/decompiler/code/Instruction.java new file mode 100644 index 0000000..faa8926 --- /dev/null +++ b/src/org/jetbrains/java/decompiler/code/Instruction.java @@ -0,0 +1,124 @@ +/* + * Fernflower - The Analytical Java Decompiler + * http://www.reversed-java.com + * + * (C) 2008 - 2010, Stiver + * + * This software is NEITHER public domain NOR free software + * as per GNU License. See license.txt for more details. + * + * This software is distributed WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. + */ + +package org.jetbrains.java.decompiler.code; + +import java.io.DataOutputStream; +import java.io.IOException; + +public class Instruction implements CodeConstants { + + // ***************************************************************************** + // public fields + // ***************************************************************************** + + public int opcode; + + public int group = CodeConstants.GROUP_GENERAL; + + public boolean wide = false; + + public int bytecode_version = BYTECODE_JAVA_LE_4; + + // ***************************************************************************** + // private fields + // ***************************************************************************** + + private int[] operands = null; + + // ***************************************************************************** + // public methods + // ***************************************************************************** + + public Instruction() {} + + public int length() { + return 1; + } + + public int operandsCount() { + return (operands==null)?0:operands.length; + } + + public int getOperand(int index) { + return operands[index]; + } + + public Instruction clone() { + return ConstantsUtil.getInstructionInstance(opcode, wide, group, bytecode_version, operands==null?null:(int[])operands.clone()); + } + + public String toString() { + + String res = wide?"@wide ":""; + res+="@"+ConstantsUtil.getName(opcode); + + int len = operandsCount(); + for(int i=0;i=opc_ireturn && opcode<=opc_return) && opcode!=opc_athrow + && opcode!=opc_jsr && opcode!=opc_tableswitch && opcode!=opc_lookupswitch; + } + + public boolean equalsInstruction(Instruction instr) { + if(opcode != instr.opcode || wide != instr.wide + || operandsCount() != instr.operandsCount()) { + return false; + } + + if(operands != null) { + for(int i=0;i