Add local var table instruction type and make relevant instructions

implement it
This commit is contained in:
Adam
2015-05-04 15:36:38 -04:00
parent 267efc7940
commit e70466fc0a
55 changed files with 726 additions and 55 deletions

View File

@@ -12,12 +12,12 @@
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>

View File

@@ -42,7 +42,7 @@ public class Deob
//execute(group); //execute(group);
JarOutputStream jout = new JarOutputStream(new FileOutputStream("d:/rs/07/adamout.jar"), new Manifest()); JarOutputStream jout = new JarOutputStream(new FileOutputStream(args[1]), new Manifest());
for (ClassFile cf : group.getClasses()) for (ClassFile cf : group.getClasses())
{ {

View File

@@ -21,7 +21,7 @@ public class Method
private int nameIndex; private int nameIndex;
private int descriptorIndex; private int descriptorIndex;
private Attributes attributes; private Attributes attributes;
public List<Node> callsTo = new ArrayList<>(), private List<Node> callsTo = new ArrayList<>(),
callsFrom = new ArrayList<>(); callsFrom = new ArrayList<>();
Method(Methods methods) throws IOException Method(Methods methods) throws IOException

View File

@@ -0,0 +1,7 @@
package info.sigterm.deob.attributes.code.instruction.types;
public interface LVTInstruction
{
public int getVariableIndex();
public boolean store();
}

View File

@@ -1,15 +1,17 @@
package info.sigterm.deob.attributes.code.instructions; package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.Method;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class ALoad extends Instruction public class ALoad extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +37,16 @@ public class ALoad extends Instruction
Object obj = frame.getVariables().get(index); Object obj = frame.getVariables().get(index);
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ALoad_0 extends Instruction public class ALoad_0 extends Instruction implements LVTInstruction
{ {
public ALoad_0(Instructions instructions, InstructionType type, int pc) throws IOException public ALoad_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class ALoad_0 extends Instruction
Object obj = frame.getVariables().get(0); Object obj = frame.getVariables().get(0);
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ALoad_1 extends Instruction public class ALoad_1 extends Instruction implements LVTInstruction
{ {
public ALoad_1(Instructions instructions, InstructionType type, int pc) throws IOException public ALoad_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class ALoad_1 extends Instruction
Object obj = frame.getVariables().get(1); Object obj = frame.getVariables().get(1);
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ALoad_2 extends Instruction public class ALoad_2 extends Instruction implements LVTInstruction
{ {
public ALoad_2(Instructions instructions, InstructionType type, int pc) throws IOException public ALoad_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class ALoad_2 extends Instruction
Object obj = frame.getVariables().get(2); Object obj = frame.getVariables().get(2);
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ALoad_3 extends Instruction public class ALoad_3 extends Instruction implements LVTInstruction
{ {
public ALoad_3(Instructions instructions, InstructionType type, int pc) throws IOException public ALoad_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class ALoad_3 extends Instruction
Object obj = frame.getVariables().get(3); Object obj = frame.getVariables().get(3);
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class AStore extends Instruction public class AStore extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class AStore extends Instruction
Object obj = frame.getStack().pop(); Object obj = frame.getStack().pop();
frame.getVariables().set(index, obj); frame.getVariables().set(index, obj);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class AStore_0 extends Instruction public class AStore_0 extends Instruction implements LVTInstruction
{ {
public AStore_0(Instructions instructions, InstructionType type, int pc) throws IOException public AStore_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class AStore_0 extends Instruction
Object obj = frame.getStack().pop(); Object obj = frame.getStack().pop();
frame.getVariables().set(0, obj); frame.getVariables().set(0, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class AStore_1 extends Instruction public class AStore_1 extends Instruction implements LVTInstruction
{ {
public AStore_1(Instructions instructions, InstructionType type, int pc) throws IOException public AStore_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class AStore_1 extends Instruction
Object obj = frame.getStack().pop(); Object obj = frame.getStack().pop();
frame.getVariables().set(1, obj); frame.getVariables().set(1, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class AStore_2 extends Instruction public class AStore_2 extends Instruction implements LVTInstruction
{ {
public AStore_2(Instructions instructions, InstructionType type, int pc) throws IOException public AStore_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class AStore_2 extends Instruction
Object obj = frame.getStack().pop(); Object obj = frame.getStack().pop();
frame.getVariables().set(2, obj); frame.getVariables().set(2, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class AStore_3 extends Instruction public class AStore_3 extends Instruction implements LVTInstruction
{ {
public AStore_3(Instructions instructions, InstructionType type, int pc) throws IOException public AStore_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class AStore_3 extends Instruction
Object obj = frame.getStack().pop(); Object obj = frame.getStack().pop();
frame.getVariables().set(3, obj); frame.getVariables().set(3, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class DLoad extends Instruction public class DLoad extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class DLoad extends Instruction
double d = (double) frame.getVariables().get(index); double d = (double) frame.getVariables().get(index);
frame.getStack().push(this, d); frame.getStack().push(this, d);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DLoad_0 extends Instruction public class DLoad_0 extends Instruction implements LVTInstruction
{ {
public DLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException public DLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DLoad_0 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DLoad_1 extends Instruction public class DLoad_1 extends Instruction implements LVTInstruction
{ {
public DLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException public DLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DLoad_1 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DLoad_2 extends Instruction public class DLoad_2 extends Instruction implements LVTInstruction
{ {
public DLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException public DLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DLoad_2 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DLoad_3 extends Instruction public class DLoad_3 extends Instruction implements LVTInstruction
{ {
public DLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException public DLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DLoad_3 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class DStore extends Instruction public class DStore extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class DStore extends Instruction
double d = (double) frame.getStack().pop(); double d = (double) frame.getStack().pop();
frame.getVariables().set(index, d); frame.getVariables().set(index, d);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DStore_0 extends Instruction public class DStore_0 extends Instruction implements LVTInstruction
{ {
public DStore_0(Instructions instructions, InstructionType type, int pc) throws IOException public DStore_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DStore_0 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getVariables().set(0, obj); frame.getVariables().set(0, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DStore_1 extends Instruction public class DStore_1 extends Instruction implements LVTInstruction
{ {
public DStore_1(Instructions instructions, InstructionType type, int pc) throws IOException public DStore_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DStore_1 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getVariables().set(1, obj); frame.getVariables().set(1, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DStore_2 extends Instruction public class DStore_2 extends Instruction implements LVTInstruction
{ {
public DStore_2(Instructions instructions, InstructionType type, int pc) throws IOException public DStore_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DStore_2 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getVariables().set(2, obj); frame.getVariables().set(2, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class DStore_3 extends Instruction public class DStore_3 extends Instruction implements LVTInstruction
{ {
public DStore_3(Instructions instructions, InstructionType type, int pc) throws IOException public DStore_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class DStore_3 extends Instruction
assert obj instanceof Double; assert obj instanceof Double;
frame.getVariables().set(3, obj); frame.getVariables().set(3, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class FLoad extends Instruction public class FLoad extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class FLoad extends Instruction
float f = (float) frame.getVariables().get(index); float f = (float) frame.getVariables().get(index);
frame.getStack().push(this, f); frame.getStack().push(this, f);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FLoad_0 extends Instruction public class FLoad_0 extends Instruction implements LVTInstruction
{ {
public FLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException public FLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FLoad_0 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FLoad_1 extends Instruction public class FLoad_1 extends Instruction implements LVTInstruction
{ {
public FLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException public FLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FLoad_1 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FLoad_2 extends Instruction public class FLoad_2 extends Instruction implements LVTInstruction
{ {
public FLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException public FLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FLoad_2 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FLoad_3 extends Instruction public class FLoad_3 extends Instruction implements LVTInstruction
{ {
public FLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException public FLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FLoad_3 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class FStore extends Instruction public class FStore extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class FStore extends Instruction
float f = (float) frame.getStack().pop(); float f = (float) frame.getStack().pop();
frame.getVariables().set(index, f); frame.getVariables().set(index, f);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FStore_0 extends Instruction public class FStore_0 extends Instruction implements LVTInstruction
{ {
public FStore_0(Instructions instructions, InstructionType type, int pc) throws IOException public FStore_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FStore_0 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getVariables().set(0, obj); frame.getVariables().set(0, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FStore_1 extends Instruction public class FStore_1 extends Instruction implements LVTInstruction
{ {
public FStore_1(Instructions instructions, InstructionType type, int pc) throws IOException public FStore_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FStore_1 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getVariables().set(1, obj); frame.getVariables().set(1, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FStore_2 extends Instruction public class FStore_2 extends Instruction implements LVTInstruction
{ {
public FStore_2(Instructions instructions, InstructionType type, int pc) throws IOException public FStore_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FStore_2 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getVariables().set(2, obj); frame.getVariables().set(2, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class FStore_3 extends Instruction public class FStore_3 extends Instruction implements LVTInstruction
{ {
public FStore_3(Instructions instructions, InstructionType type, int pc) throws IOException public FStore_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class FStore_3 extends Instruction
assert obj instanceof Float; assert obj instanceof Float;
frame.getVariables().set(3, obj); frame.getVariables().set(3, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class IInc extends Instruction public class IInc extends Instruction implements LVTInstruction
{ {
private byte index; private byte index;
private byte inc; private byte inc;
@@ -39,4 +40,16 @@ public class IInc extends Instruction
i += inc; i += inc;
frame.getVariables().set(index, i); frame.getVariables().set(index, i);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return false; // This is a get first
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class ILoad extends Instruction public class ILoad extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class ILoad extends Instruction
Object i = frame.getVariables().get(index); Object i = frame.getVariables().get(index);
frame.getStack().push(this, i); frame.getStack().push(this, i);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ILoad_0 extends Instruction public class ILoad_0 extends Instruction implements LVTInstruction
{ {
public ILoad_0(Instructions instructions, InstructionType type, int pc) throws IOException public ILoad_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class ILoad_0 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ILoad_1 extends Instruction public class ILoad_1 extends Instruction implements LVTInstruction
{ {
public ILoad_1(Instructions instructions, InstructionType type, int pc) throws IOException public ILoad_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -20,4 +21,16 @@ public class ILoad_1 extends Instruction
Object obj = frame.getVariables().get(1); Object obj = frame.getVariables().get(1);
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ILoad_2 extends Instruction public class ILoad_2 extends Instruction implements LVTInstruction
{ {
public ILoad_2(Instructions instructions, InstructionType type, int pc) throws IOException public ILoad_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class ILoad_2 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class ILoad_3 extends Instruction public class ILoad_3 extends Instruction implements LVTInstruction
{ {
public ILoad_3(Instructions instructions, InstructionType type, int pc) throws IOException public ILoad_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class ILoad_3 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class IStore extends Instruction public class IStore extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class IStore extends Instruction
Object obj = frame.getStack().pop(); Object obj = frame.getStack().pop();
frame.getVariables().set(index, obj); frame.getVariables().set(index, obj);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class IStore_0 extends Instruction public class IStore_0 extends Instruction implements LVTInstruction
{ {
public IStore_0(Instructions instructions, InstructionType type, int pc) throws IOException public IStore_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class IStore_0 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getVariables().set(0, obj); frame.getVariables().set(0, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class IStore_1 extends Instruction public class IStore_1 extends Instruction implements LVTInstruction
{ {
public IStore_1(Instructions instructions, InstructionType type, int pc) throws IOException public IStore_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class IStore_1 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getVariables().set(1, obj); frame.getVariables().set(1, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class IStore_2 extends Instruction public class IStore_2 extends Instruction implements LVTInstruction
{ {
public IStore_2(Instructions instructions, InstructionType type, int pc) throws IOException public IStore_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class IStore_2 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getVariables().set(2, obj); frame.getVariables().set(2, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class IStore_3 extends Instruction public class IStore_3 extends Instruction implements LVTInstruction
{ {
public IStore_3(Instructions instructions, InstructionType type, int pc) throws IOException public IStore_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class IStore_3 extends Instruction
assert obj instanceof Integer; assert obj instanceof Integer;
frame.getVariables().set(3, obj); frame.getVariables().set(3, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class LLoad extends Instruction public class LLoad extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class LLoad extends Instruction
long l = (long) frame.getVariables().get(index); long l = (long) frame.getVariables().get(index);
frame.getStack().push(this, l); frame.getStack().push(this, l);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LLoad_0 extends Instruction public class LLoad_0 extends Instruction implements LVTInstruction
{ {
public LLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException public LLoad_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LLoad_0 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LLoad_1 extends Instruction public class LLoad_1 extends Instruction implements LVTInstruction
{ {
public LLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException public LLoad_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LLoad_1 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LLoad_2 extends Instruction public class LLoad_2 extends Instruction implements LVTInstruction
{ {
public LLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException public LLoad_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LLoad_2 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LLoad_3 extends Instruction public class LLoad_3 extends Instruction implements LVTInstruction
{ {
public LLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException public LLoad_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LLoad_3 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getStack().push(this, obj); frame.getStack().push(this, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return false;
}
} }

View File

@@ -3,13 +3,14 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
public class LStore extends Instruction public class LStore extends Instruction implements LVTInstruction
{ {
private int index; private int index;
@@ -35,4 +36,16 @@ public class LStore extends Instruction
long l = (long) frame.getStack().pop(); long l = (long) frame.getStack().pop();
frame.getVariables().set(index, l); frame.getVariables().set(index, l);
} }
@Override
public int getVariableIndex()
{
return index;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LStore_0 extends Instruction public class LStore_0 extends Instruction implements LVTInstruction
{ {
public LStore_0(Instructions instructions, InstructionType type, int pc) throws IOException public LStore_0(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LStore_0 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getVariables().set(0, obj); frame.getVariables().set(0, obj);
} }
@Override
public int getVariableIndex()
{
return 0;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LStore_1 extends Instruction public class LStore_1 extends Instruction implements LVTInstruction
{ {
public LStore_1(Instructions instructions, InstructionType type, int pc) throws IOException public LStore_1(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LStore_1 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getVariables().set(1, obj); frame.getVariables().set(1, obj);
} }
@Override
public int getVariableIndex()
{
return 1;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LStore_2 extends Instruction public class LStore_2 extends Instruction implements LVTInstruction
{ {
public LStore_2(Instructions instructions, InstructionType type, int pc) throws IOException public LStore_2(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LStore_2 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getVariables().set(2, obj); frame.getVariables().set(2, obj);
} }
@Override
public int getVariableIndex()
{
return 2;
}
@Override
public boolean store()
{
return true;
}
} }

View File

@@ -3,11 +3,12 @@ package info.sigterm.deob.attributes.code.instructions;
import info.sigterm.deob.attributes.code.Instruction; import info.sigterm.deob.attributes.code.Instruction;
import info.sigterm.deob.attributes.code.InstructionType; import info.sigterm.deob.attributes.code.InstructionType;
import info.sigterm.deob.attributes.code.Instructions; import info.sigterm.deob.attributes.code.Instructions;
import info.sigterm.deob.attributes.code.instruction.types.LVTInstruction;
import info.sigterm.deob.execution.Frame; import info.sigterm.deob.execution.Frame;
import java.io.IOException; import java.io.IOException;
public class LStore_3 extends Instruction public class LStore_3 extends Instruction implements LVTInstruction
{ {
public LStore_3(Instructions instructions, InstructionType type, int pc) throws IOException public LStore_3(Instructions instructions, InstructionType type, int pc) throws IOException
{ {
@@ -21,4 +22,16 @@ public class LStore_3 extends Instruction
assert obj instanceof Long; assert obj instanceof Long;
frame.getVariables().set(3, obj); frame.getVariables().set(3, obj);
} }
@Override
public int getVariableIndex()
{
return 3;
}
@Override
public boolean store()
{
return true;
}
} }