Make InstructionEmulator class public
This commit is contained in:
parent
685c5ba79c
commit
349ebc4e72
|
@ -23,7 +23,7 @@ using Mono.Cecil;
|
|||
using Mono.Cecil.Cil;
|
||||
|
||||
namespace de4dot.blocks.cflow {
|
||||
class InstructionEmulator {
|
||||
public class InstructionEmulator {
|
||||
ValueStack valueStack = new ValueStack();
|
||||
IList<ParameterDefinition> parameterDefinitions;
|
||||
IList<VariableDefinition> variableDefinitions;
|
||||
|
@ -31,6 +31,13 @@ namespace de4dot.blocks.cflow {
|
|||
List<Value> locals = new List<Value>();
|
||||
int argBase;
|
||||
|
||||
public InstructionEmulator() {
|
||||
}
|
||||
|
||||
public InstructionEmulator(bool hasThis, bool initLocals, IList<ParameterDefinition> parameterDefinitions, IList<VariableDefinition> variableDefinitions) {
|
||||
init(hasThis, initLocals, parameterDefinitions, variableDefinitions);
|
||||
}
|
||||
|
||||
public void init(bool hasThis, bool initLocals, IList<ParameterDefinition> parameterDefinitions, IList<VariableDefinition> variableDefinitions) {
|
||||
this.parameterDefinitions = parameterDefinitions;
|
||||
this.variableDefinitions = variableDefinitions;
|
||||
|
@ -201,6 +208,10 @@ namespace de4dot.blocks.cflow {
|
|||
return new UnknownValue();
|
||||
}
|
||||
|
||||
public void push(Value value) {
|
||||
valueStack.push(value);
|
||||
}
|
||||
|
||||
public Value pop() {
|
||||
return valueStack.pop();
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
using System;
|
||||
|
||||
namespace de4dot.blocks.cflow {
|
||||
class Int32Value : Value {
|
||||
public class Int32Value : Value {
|
||||
const uint NO_UNKNOWN_BITS = uint.MaxValue;
|
||||
public readonly int value;
|
||||
public readonly uint validMask;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
using System;
|
||||
|
||||
namespace de4dot.blocks.cflow {
|
||||
class Int64Value : Value {
|
||||
public class Int64Value : Value {
|
||||
const ulong NO_UNKNOWN_BITS = ulong.MaxValue;
|
||||
public readonly long value;
|
||||
public readonly ulong validMask;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
namespace de4dot.blocks.cflow {
|
||||
class Real8Value : Value {
|
||||
public class Real8Value : Value {
|
||||
public readonly double value;
|
||||
|
||||
public Real8Value(double value)
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
|
||||
namespace de4dot.blocks.cflow {
|
||||
enum ValueType : byte {
|
||||
public enum ValueType : byte {
|
||||
Unknown,
|
||||
Null,
|
||||
Boxed,
|
||||
|
@ -28,13 +28,13 @@ namespace de4dot.blocks.cflow {
|
|||
String,
|
||||
}
|
||||
|
||||
enum Bool3 {
|
||||
public enum Bool3 {
|
||||
Unknown = -1,
|
||||
False,
|
||||
True,
|
||||
}
|
||||
|
||||
abstract class Value {
|
||||
public abstract class Value {
|
||||
public readonly ValueType valueType;
|
||||
|
||||
public bool isUnknown() {
|
||||
|
@ -70,7 +70,7 @@ namespace de4dot.blocks.cflow {
|
|||
}
|
||||
}
|
||||
|
||||
class UnknownValue : Value {
|
||||
public class UnknownValue : Value {
|
||||
public UnknownValue()
|
||||
: base(ValueType.Unknown) {
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ namespace de4dot.blocks.cflow {
|
|||
}
|
||||
}
|
||||
|
||||
class NullValue : Value {
|
||||
public class NullValue : Value {
|
||||
// There's only one type of null
|
||||
public static readonly NullValue Instance = new NullValue();
|
||||
|
||||
|
@ -93,7 +93,7 @@ namespace de4dot.blocks.cflow {
|
|||
}
|
||||
}
|
||||
|
||||
class BoxedValue : Value {
|
||||
public class BoxedValue : Value {
|
||||
public readonly Value value;
|
||||
|
||||
public BoxedValue(Value value)
|
||||
|
@ -106,7 +106,7 @@ namespace de4dot.blocks.cflow {
|
|||
}
|
||||
}
|
||||
|
||||
class StringValue : Value {
|
||||
public class StringValue : Value {
|
||||
public readonly string value;
|
||||
|
||||
public StringValue(string value)
|
||||
|
|
Loading…
Reference in New Issue
Block a user