Most other instructions except for function calls and locking
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class AALoad extends Instruction
|
||||
{
|
||||
public AALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
Object[] array = (Object[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class AAStore extends Instruction
|
||||
{
|
||||
public AAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
Object value = stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
Object[] array = (Object[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class ArrayLength extends Instruction
|
||||
{
|
||||
public ArrayLength(Instructions instructions, InstructionType type, int pc) throws IOException
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Object[] array = (Object[]) frame.getStack().pop();
|
||||
frame.getStack().push(array.length);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class BALoad extends Instruction
|
||||
{
|
||||
public BALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
boolean[] array = (boolean[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class BAStore extends Instruction
|
||||
{
|
||||
public BAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
boolean value = (boolean) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
boolean[] array = (boolean[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class CALoad extends Instruction
|
||||
{
|
||||
public CALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
char[] array = (char[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class CAStore extends Instruction
|
||||
{
|
||||
public CAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
char value = (char) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
char[] array = (char[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class DALoad extends Instruction
|
||||
{
|
||||
public DALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
double[] array = (double[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class DAStore extends Instruction
|
||||
{
|
||||
public DAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
double value = (double) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
double[] array = (double[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class FALoad extends Instruction
|
||||
{
|
||||
public FALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
float[] array = (float[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class FAStore extends Instruction
|
||||
{
|
||||
public FAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
float value = (float) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
float[] array = (float[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class IALoad extends Instruction
|
||||
{
|
||||
public IALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
int[] array = (int[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class IAStore extends Instruction
|
||||
{
|
||||
public IAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int value = (int) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
int[] array = (int[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class LALoad extends Instruction
|
||||
{
|
||||
public LALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
long[] array = (long[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class LAStore extends Instruction
|
||||
{
|
||||
public LAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
long value = (long) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
long[] array = (long[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class SALoad extends Instruction
|
||||
{
|
||||
public SALoad(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
int index = (int) stack.pop();
|
||||
short[] array = (short[]) stack.pop();
|
||||
|
||||
stack.push(array[index]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package info.sigterm.deob.attributes.code.instructions;
|
||||
|
||||
import info.sigterm.deob.attributes.code.Instruction;
|
||||
import info.sigterm.deob.attributes.code.InstructionType;
|
||||
import info.sigterm.deob.attributes.code.Instructions;
|
||||
import info.sigterm.deob.execution.Frame;
|
||||
import info.sigterm.deob.execution.Stack;
|
||||
|
||||
public class SAStore extends Instruction
|
||||
{
|
||||
public SAStore(Instructions instructions, InstructionType type, int pc)
|
||||
{
|
||||
super(instructions, type, pc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Frame frame)
|
||||
{
|
||||
Stack stack = frame.getStack();
|
||||
|
||||
short value = (short) stack.pop();
|
||||
int index = (int) stack.pop();
|
||||
short[] array = (short[]) stack.pop();
|
||||
|
||||
array[index] = value;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user