diff --git a/include/interfaces/irdb/STARSOp.h b/include/interfaces/irdb/STARSOp.h index 7b08eeaa618fef3db6190b11e4a58f65ca10d887..56a516a3bcf0f478f2b9674d8dd2d6e5e1c06877 100644 --- a/include/interfaces/irdb/STARSOp.h +++ b/include/interfaces/irdb/STARSOp.h @@ -162,8 +162,14 @@ class STARS_IRDB_op_t : public STARS_op_t virtual void SetNotVisible(void) { assert(OpType!=op_Void); visible=0; } // Set operand to type that is implicit, not explicit in disasm - virtual void SetTypeToMemDisplacement(void) { OpType=op_Mem; } // change type during stack normalization - virtual void SetTypeToMemNoDisplacement(void) { }; // change type during stack normalization + + // this is used to change the type of a memory operand during stack normalization + virtual void SetTypeToMemDisplacement(void) { assert(IsMemDisplacementOp()); } // SetAddr(non-zero) should already be called, which implicitly does this. + + // this is used to change the type of a memory operand during stack normalization + virtual void SetTypeToMemNoDisplacement(void) { assert(OpType==op_Mem && operand.mem.base==0); } // SetAddr(0) should already have been called + + virtual void CleanOpndEncoding(void) { }; // Get rid of unnecessary SIB byte encodings, etc. // Query methods @@ -192,17 +198,6 @@ class STARS_IRDB_op_t : public STARS_op_t virtual bool MatchesReg(uint16_t RegNum) const { return OpType==op_Reg && RegNum == operand.reg.RegNum; -#if 0 - switch(OpType) - { - case op_Reg: - return RegNum == operand.reg.RegNum; - case op_Mem: - return RegNum == operand.mem.base; - default: - return false; - } -#endif } virtual bool IsNearPointer(void) const { return OpType==op_Addr; } virtual bool IsFarPointer(void) const { return false; }