decompiler
1.0.0
|
Casting strategies that are specific to the Java language. More...
#include <cast.hh>
Public Member Functions | |
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. More... | |
virtual bool | isZextCast (Datatype *outtype, Datatype *intype) const |
Is zero-extending an input data-type, producing an output data-type, considered a cast. More... | |
Public Member Functions inherited from CastStrategyC | |
virtual int4 | localExtensionType (const Varnode *vn) const |
Decide on integer promotion by examining just local properties of the given Varnode. More... | |
virtual int4 | intPromotionType (const Varnode *vn) const |
Calculate the integer promotion code of a given Varnode. More... | |
virtual bool | checkIntPromotionForCompare (const PcodeOp *op, int4 slot) const |
Check if integer promotion forces a cast for the given comparison op and slot. More... | |
virtual bool | checkIntPromotionForExtension (const PcodeOp *op) const |
Check if integer promotion forces a cast for the input to the given extension. More... | |
virtual bool | isExtensionCastImplied (const PcodeOp *op, const PcodeOp *readOp) const |
Is the given ZEXT/SEXT cast implied by the expression its in? More... | |
virtual Datatype * | arithmeticOutputStandard (const PcodeOp *op) |
What is the output data-type produced by the given integer arithmetic operation. More... | |
virtual bool | isSubpieceCast (Datatype *outtype, Datatype *intype, uint4 offset) const |
Is truncating an input data-type, producing an output data-type, considered a cast. More... | |
virtual bool | isSubpieceCastEndian (Datatype *outtype, Datatype *intype, uint4 offset, bool isbigend) const |
Is the given data-type truncation considered a cast, given endianess concerns. More... | |
virtual bool | isSextCast (Datatype *outtype, Datatype *intype) const |
Is sign-extending an input data-type, producing an output data-type, considered a cast. More... | |
Public Member Functions inherited from CastStrategy | |
CastStrategy (void) | |
Constructor. | |
void | setTypeFactory (TypeFactory *t) |
Establish the data-type factory. More... | |
virtual | ~CastStrategy (void) |
Destructor. | |
Additional Inherited Members | |
Public Types inherited from CastStrategy | |
enum | IntPromotionCode { NO_PROMOTION = -1, UNKNOWN_PROMOTION = 0, UNSIGNED_EXTENSION = 1, SIGNED_EXTENSION = 2, EITHER_EXTENSION = 3 } |
Types of integer promotion. More... | |
Protected Attributes inherited from CastStrategy | |
TypeFactory * | tlst |
Type factory associated with the Architecture. | |
int4 | promoteSize |
Size of int data-type, (size that integers get promoted to) | |
Casting strategies that are specific to the Java language.
This is nearly identical to the strategy for C, but there is some change to account for the way object references are encoded as pointer data-types within the decompiler's data-type system.
|
virtual |
Does there need to be a visible cast between the given data-types.
The cast is from a current data-type to an expected data-type. NULL is returned if no cast is required, otherwise the data-type to cast to (usually the expected data-type) is returned.
reqtype | is the expected data-type |
curtype | is the current data-type |
care_uint_int | is true if we care about a change in signedness |
care_ptr_uint | is true if we care about conversions between pointers and unsigned values |
Reimplemented from CastStrategyC.
References Datatype::getMetatype(), Datatype::getSize(), TYPE_BOOL, TYPE_CODE, TYPE_INT, TYPE_PTR, TYPE_UINT, TYPE_UNKNOWN, and TYPE_VOID.
Is zero-extending an input data-type, producing an output data-type, considered a cast.
Data-types must be provided from the input and output of an INT_ZEXT operation.
outtype | is the output data-type |
intype | is the input data-type |
Reimplemented from CastStrategyC.
References Datatype::getMetatype(), Datatype::getSize(), Datatype::isCharPrint(), TYPE_BOOL, TYPE_INT, and TYPE_UINT.