7.5. Arithmetic Operations
Binary operations use BinOp:
#check BinOp.ADD -- Addition
#check BinOp.SUB -- Subtraction
#check BinOp.AND -- Bitwise AND
#check BinOp.OR -- Bitwise OR
#check BinOp.XOR -- Bitwise XOR
#check BinOp.CMP -- Compare (SUB without storing result)
#check BinOp.ADC -- Add with carry
#check BinOp.SBB -- Subtract with borrow
Examples:
#check Instr.BOP OpSize.Op32 BinOp.ADD (DstSrc.RR EAX EBX)
-- SUB EAX, 10
#check Instr.BOP OpSize.Op32 BinOp.SUB (DstSrc.RI EAX 10)
-- XOR EAX, EAX (zero a register)
#check Instr.BOP OpSize.Op32 BinOp.XOR (DstSrc.RR EAX EAX)
Unary operations use UnaryOp:
#check Instr.UOP OpSize.Op32 UnaryOp.INC (RegMem.R ECX)
-- DEC ECX
#check Instr.UOP OpSize.Op32 UnaryOp.DEC (RegMem.R ECX)
-- NEG EAX (two's complement)
#check Instr.UOP OpSize.Op32 UnaryOp.NEG (RegMem.R EAX)