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

Reply via email to