@@ -740,82 +740,70 @@ impl TryFrom<(&Operand, Option<u8>)> for CmpExpr {
740740 let value = value. 0 ;
741741
742742 let expr = match value {
743- Operand :: ImmediateI8 ( i ) => CmpExpr :: I8 ( * i ) ,
744- Operand :: ImmediateU8 ( u ) => CmpExpr :: U8 ( * u ) ,
745- Operand :: ImmediateI16 ( i ) => CmpExpr :: I16 ( * i ) ,
746- Operand :: ImmediateU16 ( u ) => CmpExpr :: U16 ( * u ) ,
747- Operand :: ImmediateI32 ( i ) => CmpExpr :: I32 ( * i ) ,
748- Operand :: ImmediateU32 ( u ) => CmpExpr :: U32 ( * u ) ,
749- Operand :: ImmediateI64 ( i ) => CmpExpr :: I64 ( * i ) ,
750- Operand :: ImmediateU64 ( u ) => CmpExpr :: U64 ( * u ) ,
751- Operand :: Register ( r ) => CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ,
752- Operand :: DisplacementU32 ( d ) => CmpExpr :: Addr ( * d as u64 ) ,
753- Operand :: DisplacementU64 ( d ) => CmpExpr :: Addr ( * d ) ,
754- Operand :: RegDeref ( r ) => CmpExpr :: Deref ( (
755- Box :: new ( CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ) ,
743+ Operand :: ImmediateI8 { imm } => CmpExpr :: I8 ( * imm ) ,
744+ Operand :: ImmediateU8 { imm } => CmpExpr :: U8 ( * imm ) ,
745+ Operand :: ImmediateI16 { imm } => CmpExpr :: I16 ( * imm ) ,
746+ Operand :: ImmediateU16 { imm } => CmpExpr :: U16 ( * imm ) ,
747+ Operand :: ImmediateI32 { imm } => CmpExpr :: I32 ( * imm ) ,
748+ Operand :: ImmediateU32 { imm } => CmpExpr :: U32 ( * imm ) ,
749+ Operand :: ImmediateI64 { imm } => CmpExpr :: I64 ( * imm ) ,
750+ Operand :: ImmediateU64 { imm } => CmpExpr :: U64 ( * imm ) ,
751+ Operand :: Register { reg } => CmpExpr :: Reg ( ( reg . name ( ) . to_string ( ) , reg . width ( ) ) ) ,
752+ Operand :: AbsoluteU32 { addr } => CmpExpr :: Addr ( * addr as u64 ) ,
753+ Operand :: AbsoluteU64 { addr } => CmpExpr :: Addr ( * addr ) ,
754+ Operand :: MemDeref { base } => CmpExpr :: Deref ( (
755+ Box :: new ( CmpExpr :: Reg ( ( base . name ( ) . to_string ( ) , base . width ( ) ) ) ) ,
756756 width,
757757 ) ) ,
758- Operand :: RegDisp ( r , d ) => CmpExpr :: Deref ( (
758+ Operand :: Disp { base , disp } => CmpExpr :: Deref ( (
759759 Box :: new ( CmpExpr :: Add ( (
760- Box :: new ( CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ) ,
761- Box :: new ( CmpExpr :: I32 ( * d ) ) ,
760+ Box :: new ( CmpExpr :: Reg ( ( base . name ( ) . to_string ( ) , base . width ( ) ) ) ) ,
761+ Box :: new ( CmpExpr :: I32 ( * disp ) ) ,
762762 ) ) ) ,
763763 width,
764764 ) ) ,
765- Operand :: RegScale ( r , s ) => CmpExpr :: Deref ( (
765+ Operand :: MemIndexScale { index , scale } => CmpExpr :: Deref ( (
766766 Box :: new ( CmpExpr :: Mul ( (
767- Box :: new ( CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ) ,
768- Box :: new ( CmpExpr :: U8 ( * s ) ) ,
767+ Box :: new ( CmpExpr :: Reg ( ( index . name ( ) . to_string ( ) , index . width ( ) ) ) ) ,
768+ Box :: new ( CmpExpr :: U8 ( * scale ) ) ,
769769 ) ) ) ,
770770 width,
771771 ) ) ,
772- Operand :: RegIndexBase ( r, i) => CmpExpr :: Deref ( (
773- Box :: new ( CmpExpr :: Add ( (
774- Box :: new ( CmpExpr :: Reg ( ( r. name ( ) . to_string ( ) , r. width ( ) ) ) ) ,
775- Box :: new ( CmpExpr :: Reg ( ( i. name ( ) . to_string ( ) , i. width ( ) ) ) ) ,
776- ) ) ) ,
777- width,
778- ) ) ,
779- Operand :: RegIndexBaseDisp ( r, i, d) => CmpExpr :: Deref ( (
780- Box :: new ( CmpExpr :: Add ( (
781- Box :: new ( CmpExpr :: Add ( (
782- Box :: new ( CmpExpr :: Reg ( ( r. name ( ) . to_string ( ) , r. width ( ) ) ) ) ,
783- Box :: new ( CmpExpr :: Reg ( ( i. name ( ) . to_string ( ) , i. width ( ) ) ) ) ,
784- ) ) ) ,
785- Box :: new ( CmpExpr :: I32 ( * d) ) ,
786- ) ) ) ,
787- width,
788- ) ) ,
789- Operand :: RegScaleDisp ( r, s, d) => CmpExpr :: Deref ( (
772+ Operand :: MemIndexScaleDisp { index, scale, disp } => CmpExpr :: Deref ( (
790773 Box :: new ( CmpExpr :: Add ( (
791774 Box :: new ( CmpExpr :: Mul ( (
792- Box :: new ( CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ) ,
793- Box :: new ( CmpExpr :: U8 ( * s ) ) ,
775+ Box :: new ( CmpExpr :: Reg ( ( index . name ( ) . to_string ( ) , index . width ( ) ) ) ) ,
776+ Box :: new ( CmpExpr :: U8 ( * scale ) ) ,
794777 ) ) ) ,
795- Box :: new ( CmpExpr :: I32 ( * d ) ) ,
778+ Box :: new ( CmpExpr :: I32 ( * disp ) ) ,
796779 ) ) ) ,
797780 width,
798781 ) ) ,
799- Operand :: RegIndexBaseScale ( r , i , s ) => CmpExpr :: Deref ( (
782+ Operand :: MemBaseIndexScale { base , index , scale } => CmpExpr :: Deref ( (
800783 Box :: new ( CmpExpr :: Add ( (
801- Box :: new ( CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ) ,
784+ Box :: new ( CmpExpr :: Reg ( ( base . name ( ) . to_string ( ) , base . width ( ) ) ) ) ,
802785 Box :: new ( CmpExpr :: Add ( (
803- Box :: new ( CmpExpr :: Reg ( ( i . name ( ) . to_string ( ) , i . width ( ) ) ) ) ,
804- Box :: new ( CmpExpr :: U8 ( * s ) ) ,
786+ Box :: new ( CmpExpr :: Reg ( ( index . name ( ) . to_string ( ) , index . width ( ) ) ) ) ,
787+ Box :: new ( CmpExpr :: U8 ( * scale ) ) ,
805788 ) ) ) ,
806789 ) ) ) ,
807790 width,
808791 ) ) ,
809- Operand :: RegIndexBaseScaleDisp ( r, i, s, d) => CmpExpr :: Deref ( (
792+ Operand :: MemBaseIndexScaleDisp {
793+ base,
794+ index,
795+ scale,
796+ disp,
797+ } => CmpExpr :: Deref ( (
810798 Box :: new ( CmpExpr :: Add ( (
811799 Box :: new ( CmpExpr :: Add ( (
812- Box :: new ( CmpExpr :: Reg ( ( r . name ( ) . to_string ( ) , r . width ( ) ) ) ) ,
800+ Box :: new ( CmpExpr :: Reg ( ( base . name ( ) . to_string ( ) , base . width ( ) ) ) ) ,
813801 Box :: new ( CmpExpr :: Add ( (
814- Box :: new ( CmpExpr :: Reg ( ( i . name ( ) . to_string ( ) , i . width ( ) ) ) ) ,
815- Box :: new ( CmpExpr :: U8 ( * s ) ) ,
802+ Box :: new ( CmpExpr :: Reg ( ( index . name ( ) . to_string ( ) , index . width ( ) ) ) ) ,
803+ Box :: new ( CmpExpr :: U8 ( * scale ) ) ,
816804 ) ) ) ,
817805 ) ) ) ,
818- Box :: new ( CmpExpr :: I32 ( * d ) ) ,
806+ Box :: new ( CmpExpr :: I32 ( * disp ) ) ,
819807 ) ) ) ,
820808 width,
821809 ) ) ,
0 commit comments