Add public local/arg set methods

This commit is contained in:
de4dot 2012-01-08 22:39:52 +01:00
parent 1e21845448
commit 061f793f68

View File

@ -180,6 +180,14 @@ namespace de4dot.blocks.cflow {
return null;
}
public void setArg(ParameterDefinition arg, Value value) {
setArg(index(arg), value);
}
public void makeArgUnknown(ParameterDefinition arg) {
setArg(arg, getUnknownArg(index(arg)));
}
void setArg(int index, Value value) {
if (0 <= index && index < args.Count)
args[index] = truncateValue(value, getArgType(index));
@ -197,6 +205,14 @@ namespace de4dot.blocks.cflow {
return getLocal(local.Index);
}
public void setLocal(VariableDefinition local, Value value) {
setLocal(local.Index, value);
}
public void makeLocalUnknown(VariableDefinition local) {
setLocal(local.Index, getUnknownLocal(local.Index));
}
void setLocal(int index, Value value) {
if (0 <= index && index < locals.Count)
locals[index] = truncateValue(value, variableDefinitions[index].VariableType);
@ -830,7 +846,7 @@ namespace de4dot.blocks.cflow {
void emulate_Ldarga(ParameterDefinition arg) {
valueStack.pushUnknown();
setArg(index(arg), getUnknownArg(index(arg)));
makeArgUnknown(arg);
}
void emulate_Ldloca(int index) {