Ghidra Decompiler Analysis Engine
|
@ SIGNED_EXTENSION
The value is promoted using signed extension.
Definition: cast.hh:50
virtual bool isSubpieceCast(Datatype *outtype, Datatype *intype, uint4 offset) const =0
Is truncating an input data-type, producing an output data-type, considered a cast.
Casting strategies that are specific to the Java language.
Definition: cast.hh:178
void setTypeFactory(TypeFactory *t)
Establish the data-type factory.
Definition: cast.cc:21
virtual int4 localExtensionType(const Varnode *vn) const
Decide on integer promotion by examining just local properties of the given Varnode.
Definition: cast.cc:61
virtual bool isSextCast(Datatype *outtype, Datatype *intype) const
Is sign-extending an input data-type, producing an output data-type, considered a cast.
Definition: cast.cc:348
virtual Datatype * arithmeticOutputStandard(const PcodeOp *op)=0
What is the output data-type produced by the given integer arithmetic operation.
Casting strategies that are specific to the C language.
Definition: cast.hh:158
virtual bool checkIntPromotionForExtension(const PcodeOp *op) const =0
Check if integer promotion forces a cast for the input to the given extension.
int4 promoteSize
Size of int data-type, (size that integers get promoted to)
Definition: cast.hh:55
virtual bool isExtensionCastImplied(const PcodeOp *op, const PcodeOp *readOp) const
Is the given ZEXT/SEXT cast implied by the expression its in?
Definition: cast.cc:169
virtual Datatype * castStandard(Datatype *reqtype, Datatype *curtype, bool care_uint_int, bool care_ptr_uint) const =0
Does there need to be a visible cast between the given data-types.
virtual bool isSubpieceCast(Datatype *outtype, Datatype *intype, uint4 offset) const
Is truncating an input data-type, producing an output data-type, considered a cast.
Definition: cast.cc:311
virtual bool checkIntPromotionForCompare(const PcodeOp *op, int4 slot) const
Check if integer promotion forces a cast for the given comparison op and slot.
Definition: cast.cc:28
Lowest level operation of the p-code language.
Definition: op.hh:58
virtual Datatype * castStandard(Datatype *reqtype, Datatype *curtype, bool care_uint_int, bool care_ptr_uint) const
Does there need to be a visible cast between the given data-types.
Definition: cast.cc:368
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
@ UNKNOWN_PROMOTION
The type of integer promotion cannot be determined.
Definition: cast.hh:48
A strategy for applying type casts.
Definition: cast.hh:40
virtual int4 intPromotionType(const Varnode *vn) const =0
Calculate the integer promotion code of a given Varnode.
virtual bool isSubpieceCastEndian(Datatype *outtype, Datatype *intype, uint4 offset, bool isbigend) const =0
Is the given data-type truncation considered a cast, given endianess concerns.
The base datatype class for the decompiler.
Definition: type.hh:62
Container class for all Datatype objects in an Architecture.
Definition: type.hh:396
virtual bool isZextCast(Datatype *outtype, Datatype *intype) const =0
Is zero-extending an input data-type, producing an output data-type, considered a cast.
virtual bool isZextCast(Datatype *outtype, Datatype *intype) const
Is zero-extending an input data-type, producing an output data-type, considered a cast.
Definition: cast.cc:358
virtual bool isSubpieceCastEndian(Datatype *outtype, Datatype *intype, uint4 offset, bool isbigend) const
Is the given data-type truncation considered a cast, given endianess concerns.
Definition: cast.cc:339
virtual bool checkIntPromotionForExtension(const PcodeOp *op) const
Check if integer promotion forces a cast for the input to the given extension.
Definition: cast.cc:47
virtual bool isExtensionCastImplied(const PcodeOp *op, const PcodeOp *readOp) const =0
Is the given ZEXT/SEXT cast implied by the expression its in?
virtual bool checkIntPromotionForCompare(const PcodeOp *op, int4 slot) const =0
Check if integer promotion forces a cast for the given comparison op and slot.
Classes for describing and printing data-types.
virtual int4 intPromotionType(const Varnode *vn) const
Calculate the integer promotion code of a given Varnode.
Definition: cast.cc:98
@ UNSIGNED_EXTENSION
The value is promoted using unsigned extension.
Definition: cast.hh:49
virtual bool isZextCast(Datatype *outtype, Datatype *intype) const
Is zero-extending an input data-type, producing an output data-type, considered a cast.
Definition: cast.cc:426
virtual Datatype * castStandard(Datatype *reqtype, Datatype *curtype, bool care_uint_int, bool care_ptr_uint) const
Does there need to be a visible cast between the given data-types.
Definition: cast.cc:220
virtual bool isSextCast(Datatype *outtype, Datatype *intype) const =0
Is sign-extending an input data-type, producing an output data-type, considered a cast.
virtual int4 localExtensionType(const Varnode *vn) const =0
Decide on integer promotion by examining just local properties of the given Varnode.
TypeFactory * tlst
Type factory associated with the Architecture.
Definition: cast.hh:54
virtual Datatype * arithmeticOutputStandard(const PcodeOp *op)
What is the output data-type produced by the given integer arithmetic operation.
Definition: cast.cc:294
IntPromotionCode
Types of integer promotion.
Definition: cast.hh:46
@ EITHER_EXTENSION
The value is promoted using either signed or unsigned extension.
Definition: cast.hh:51
@ NO_PROMOTION
There is no integer promotion.
Definition: cast.hh:47