Author: jbevain Date: 2008-01-19 20:02:23 -0500 (Sat, 19 Jan 2008) New Revision: 93332
Modified: trunk/cecil/flowanalysis/Cecil.FlowAnalysis/ActionFlow/ExpressionDecompiler.cs Log: deal with unsigned opcodes Modified: trunk/cecil/flowanalysis/Cecil.FlowAnalysis/ActionFlow/ExpressionDecompiler.cs =================================================================== --- trunk/cecil/flowanalysis/Cecil.FlowAnalysis/ActionFlow/ExpressionDecompiler.cs 2008-01-20 01:01:59 UTC (rev 93331) +++ trunk/cecil/flowanalysis/Cecil.FlowAnalysis/ActionFlow/ExpressionDecompiler.cs 2008-01-20 01:02:23 UTC (rev 93332) @@ -347,11 +347,21 @@ PushBinaryExpression (BinaryOperator.LessThan); } + public override void OnClt_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.LessThan); + } + public override void OnCgt (Instruction instruction) { PushBinaryExpression (BinaryOperator.GreaterThan); } + public override void OnCgt_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.GreaterThan); + } + public override void OnBeq (Instruction instruction) { PushBinaryExpression (BinaryOperator.ValueEquality); @@ -367,26 +377,51 @@ PushBinaryExpression (BinaryOperator.LessThanOrEqual); } + public override void OnBle_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.LessThanOrEqual); + } + public override void OnBgt (Instruction instruction) { PushBinaryExpression (BinaryOperator.GreaterThan); } + public override void OnBgt_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.GreaterThan); + } + public override void OnBge (Instruction instruction) { PushBinaryExpression (BinaryOperator.GreaterThanOrEqual); } + public override void OnBge_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.GreaterThanOrEqual); + } + public override void OnBlt (Instruction instruction) { PushBinaryExpression (BinaryOperator.LessThan); } + public override void OnBlt_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.LessThan); + } + public override void OnShr (Instruction instruction) { PushBinaryExpression (BinaryOperator.RightShift); } + public override void OnShr_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.RightShift); + } + public override void OnShl (Instruction instruction) { PushBinaryExpression (BinaryOperator.LeftShift); @@ -412,6 +447,11 @@ PushBinaryExpression (BinaryOperator.Modulo); } + public override void OnRem_Un (Instruction instruction) + { + PushBinaryExpression (BinaryOperator.Modulo); + } + public override void OnNot (Instruction instruction) { PushUnaryExpression (UnaryOperator.BitwiseComplement, Pop ()); @@ -438,14 +478,12 @@ public override void OnLdfld (Instruction instruction) { - FieldReference field = (FieldReference)instruction.Operand; - Push (new FieldReferenceExpression (Pop (), field)); + Push (new FieldReferenceExpression (Pop (), (FieldReference) instruction.Operand)); } public override void OnLdsfld (Instruction instruction) { - FieldReference field = (FieldReference) instruction.Operand; - Push(new FieldReferenceExpression(null, field)); + OnLdfld (instruction); } public override void OnLdnull (Instruction instruction) _______________________________________________ Mono-patches maillist - Mono-patches@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-patches