Ghidra Decompiler Analysis Engine
|
Go to the documentation of this file.
19 #ifndef __CPUI_TYPEOP__
20 #define __CPUI_TYPEOP__
52 virtual void setSymbol(
const string &nm) {
name = nm; }
56 const string &getName(
void)
const {
return name; }
58 uint4 getFlags(
void)
const {
return opflags; }
159 virtual void setMetatypeIn(
type_metatype val) { metain = val; }
160 virtual void setMetatypeOut(
type_metatype val) { metaout = val; }
163 :
TypeOp(t,opc,n) { metaout = mout; metain = min; }
176 virtual void setMetatypeIn(
type_metatype val) { metain = val; }
177 virtual void setMetatypeOut(
type_metatype val) { metaout = val; }
180 :
TypeOp(t,opc,n) { metaout = mout; metain = min; }
193 virtual void setMetatypeIn(
type_metatype val) { metain = val; }
194 virtual void setMetatypeOut(
type_metatype val) { metaout = val; }
197 :
TypeOp(t,opc,n) { metaout = mout; metain = min; }
bool inheritsSign(void) const
Return true if the op-code inherits it signedness from its inputs.
Definition: typeop.hh:107
Information about the INT_AND op-code.
Definition: typeop.hh:432
virtual void opFloatMult(const PcodeOp *op)=0
Emit a FLOAT_MULT operator.
Information about the INT_LESS op-code.
Definition: typeop.hh:334
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:732
Information about the FLOAT_MULT op-code.
Definition: typeop.hh:595
Information about the INT_CARRY op-code.
Definition: typeop.hh:384
uintb recoverInputUnary(int4 sizeout, uintb out, int4 sizein) const
Reverse the unary op-code operation, recovering a constant input value.
Definition: typeop.hh:101
The base class API for emitting a high-level language.
Definition: printlanguage.hh:134
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1647
TypeOpFloatAdd(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1403
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1328
virtual void opIntSrem(const PcodeOp *op)=0
Emit a INT_SREM operator.
virtual void opIntAnd(const PcodeOp *op)=0
Emit a INT_AND operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:769
virtual void opIntScarry(const PcodeOp *op)=0
Emit a INT_SCARRY operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:640
TypeOpCast(TypeFactory *t)
Constructor.
Definition: typeop.cc:1607
@ inherits_sign_zero
Only inherits sign from first operand, not the second.
Definition: typeop.hh:41
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:362
TypeOp(TypeFactory *t, OpCode opc, const string &n)
Constructor.
Definition: typeop.cc:150
TypeOpSegment(TypeFactory *t)
Constructor.
Definition: typeop.cc:1730
virtual void opFloatAbs(const PcodeOp *op)=0
Emit a FLOAT_ABS operator.
Information about the INT_LEFT op-code.
Definition: typeop.hh:448
Information about the INT_SREM op-code.
Definition: typeop.hh:510
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:387
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:329
TypeOpFloatSub(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1424
Information about the FLOAT_DIV op-code.
Definition: typeop.hh:588
virtual void opFloatEqual(const PcodeOp *op)=0
Emit a FLOAT_EQUAL operator.
virtual void opIntRight(const PcodeOp *op)=0
Emit a INT_RIGHT operator.
virtual void opInt2Comp(const PcodeOp *op)=0
Emit a INT_2COMP operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.hh:766
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:908
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1526
TypeOpIntMult(TypeFactory *t)
Constructor.
Definition: typeop.cc:1246
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:647
Information about the MULTIEQUAL op-code.
Definition: typeop.hh:672
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:466
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:705
static void selectJavaOperators(vector< TypeOp * > &inst, bool val)
Toggle Java specific aspects of the op-code information.
Definition: typeop.cc:112
virtual void opIntSub(const PcodeOp *op)=0
Emit a INT_SUB operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:350
Information about the BOOL_NEGATE op-code.
Definition: typeop.hh:518
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1069
virtual void opBoolXor(const PcodeOp *op)=0
Emit a BOOL_XOR operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:481
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1083
TypeOpFloatCeil(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1473
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:738
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1597
TypeOpMulti(TypeFactory *t)
Constructor.
Definition: typeop.cc:1494
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:305
virtual void opCpoolRefOp(const PcodeOp *op)=0
Emit a CPOOLREF operator.
TypeOpIntSborrow(TypeFactory *t)
Constructor.
Definition: typeop.cc:1046
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:199
virtual void opFloatDiv(const PcodeOp *op)=0
Emit a FLOAT_DIV operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1214
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:290
Information about the FLOAT_ROUND op-code.
Definition: typeop.hh:665
TypeOpBoolXor(TypeFactory *t)
Constructor.
Definition: typeop.cc:1347
virtual void opFloatNan(const PcodeOp *op)=0
Emit a FLOAT_NAN operator.
TypeOpFloatLessEqual(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1389
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1853
TypeOpCpoolref(TypeFactory *t)
Constructor.
Definition: typeop.cc:1771
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:787
virtual void opIntCarry(const PcodeOp *op)=0
Emit a INT_CARRY operator.
virtual void opPiece(const PcodeOp *op)=0
Emit a PIECE operator.
virtual void opCall(const PcodeOp *op)=0
Emit a CALL operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1539
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:626
TypeOpFloatRound(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1487
TypeOpBranchind(TypeFactory *t)
Constructor.
Definition: typeop.cc:523
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:265
TypeOpFloatNotEqual(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1375
Information about the INT_MULT op-code.
Definition: typeop.hh:478
Information about the SEGMENTOP op-code.
Definition: typeop.hh:750
Information about the PTRSUB op-code.
Definition: typeop.hh:731
virtual void opFloatTrunc(const PcodeOp *op)=0
Emit a FLOAT_TRUNC operator.
Information about the FLOAT_INT2FLOAT op-code.
Definition: typeop.hh:630
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:675
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:395
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1147
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:996
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:249
Information about the SUBPIECE op-code.
Definition: typeop.hh:698
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:830
Information about the STORE op-code.
Definition: typeop.hh:227
virtual void opIntSright(const PcodeOp *op)=0
Emit a INT_SRIGHT operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:379
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:778
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:427
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:943
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:211
Information about the FLOAT_ABS op-code.
Definition: typeop.hh:616
OpBehavior * behave
Object for emulating the behavior of the op-code.
Definition: typeop.hh:49
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:851
TypeOpFloatMult(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1417
TypeOpIntLeft(TypeFactory *t)
Constructor.
Definition: typeop.cc:1131
Information about the CALLIND op-code.
Definition: typeop.hh:272
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:443
Information about the COPY op-code.
Definition: typeop.hh:206
virtual void opInsertOp(const PcodeOp *op)=0
Emit an INSERT operator.
An interface to the pool of constant objects for byte-code languages.
Definition: cpool.hh:92
TypeOpCallind(TypeFactory *t)
Constructor.
Definition: typeop.cc:615
Information about the PIECE op-code.
Definition: typeop.hh:689
TypeOpIntSrem(TypeFactory *t)
Constructor.
Definition: typeop.cc:1320
Information about the BRANCH op-code.
Definition: typeop.hh:237
Definitions to support a constant pool for deferred compilation languages (i.e. java byte-code)
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:257
TypeOpCallother(TypeFactory *t)
Constructor.
Definition: typeop.cc:688
TypeOpFloatInt2Float(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1452
virtual void opBranch(const PcodeOp *op)=0
Emit a BRANCH operator.
TypeOpIntDiv(TypeFactory *t)
Constructor.
Definition: typeop.cc:1260
virtual void opFloatSqrt(const PcodeOp *op)=0
Emit a FLOAT_SQRT operator.
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1707
TypeOpIntSless(TypeFactory *t)
Constructor.
Definition: typeop.cc:864
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:714
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:530
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:1053
Class encapsulating the action/behavior of specific pcode opcodes.
Definition: opbehavior.hh:42
TypeOpFloatDiv(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1410
TypeOpSubpiece(TypeFactory *t)
Constructor.
Definition: typeop.cc:1581
Information about the INT_NEGATE op-code.
Definition: typeop.hh:416
virtual uintb evaluateBinary(int4 sizeout, int4 sizein, uintb in1, uintb in2) const
Emulate the binary op-code on input values.
Definition: opbehavior.cc:123
Information about the FLOAT_NEG op-code.
Definition: typeop.hh:609
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:556
virtual void opIntRem(const PcodeOp *op)=0
Emit a INT_REM operator.
TypeOpIntLessEqual(TypeFactory *t)
Constructor.
Definition: typeop.cc:918
string name
Symbol denoting this operation.
Definition: typeop.hh:48
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1754
TypeOpPtrsub(TypeFactory *t)
Constructor.
Definition: typeop.cc:1672
OpCode opcode
The op-code value.
Definition: typeop.hh:45
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:345
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:653
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1164
Information about the INT_SUB op-code.
Definition: typeop.hh:376
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:321
TypeOpIntLess(TypeFactory *t)
Constructor.
Definition: typeop.cc:900
virtual void opFloatLessEqual(const PcodeOp *op)=0
Emit a FLOAT_LESSEQUAL operator.
virtual void opBranchind(const PcodeOp *op)=0
Emit a BRANCHIND operator.
Information about the FLOAT_SUB op-code.
Definition: typeop.hh:602
Information about the CBRANCH op-code.
Definition: typeop.hh:245
virtual void opNewOp(const PcodeOp *op)=0
Emit a NEW operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:978
Information about the CALL op-code.
Definition: typeop.hh:262
virtual void opFloatLess(const PcodeOp *op)=0
Emit a FLOAT_LESS operator.
Information about the FLOAT_LESSEQUAL op-code.
Definition: typeop.hh:567
Classes for describing the behavior of individual p-code operations.
Lowest level operation of the p-code language.
Definition: op.hh:58
virtual void opFloatAdd(const PcodeOp *op)=0
Emit a FLOAT_ADD operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1695
uintb evaluateUnary(int4 sizeout, int4 sizein, uintb in1) const
Emulate the unary op-code on an input value.
Definition: typeop.hh:68
virtual void opIntSlessEqual(const PcodeOp *op)=0
Emit a INT_SLESSEQUAL operator.
virtual void opFloatNeg(const PcodeOp *op)=0
Emit a FLOAT_NEG operator.
virtual void opIntOr(const PcodeOp *op)=0
Emit a INT_OR operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:505
bool isCommutative(void) const
Return true if this op-code is commutative.
Definition: typeop.cc:169
TypeOpIntAdd(TypeFactory *t)
Constructor.
Definition: typeop.cc:988
Information about the INT_NOTEQUAL op-code.
Definition: typeop.hh:310
Definitions for high-level variables.
Information about the INSERT op-code.
Definition: typeop.hh:783
TypeOpInt2Comp(TypeFactory *t)
Constructor.
Definition: typeop.cc:1061
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:430
Information about the INDIRECT op-code.
Definition: typeop.hh:680
TypeOpIntSub(TypeFactory *t)
Constructor.
Definition: typeop.cc:1002
virtual void opIntLeft(const PcodeOp *op)=0
Emit a INT_LEFT operator.
Information about the INT_SLESSEQUAL op-code.
Definition: typeop.hh:326
Information about the BRANCHIND op-code.
Definition: typeop.hh:254
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:470
Information about the CALLOTHER op-code (user defined p-code operations)
Definition: typeop.hh:282
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:411
virtual void opExtractOp(const PcodeOp *op)=0
Emit an EXTRACT operator.
TypeOpCopy(TypeFactory *t)
Constructor.
Definition: typeop.cc:329
virtual void opIntZext(const PcodeOp *op, const PcodeOp *readOp)=0
Emit a INT_ZEXT operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:521
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:633
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:460
virtual void opFloatNotEqual(const PcodeOp *op)=0
Emit a FLOAT_NOTEQUAL operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1614
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:316
Information about the INT_SCARRY op-code.
Definition: typeop.hh:392
TypeOpBoolOr(TypeFactory *t)
Constructor.
Definition: typeop.cc:1361
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:296
Information about the CAST op-code.
Definition: typeop.hh:709
TypeOpIntScarry(TypeFactory *t)
Constructor.
Definition: typeop.cc:1031
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:188
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:584
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:304
virtual void opStore(const PcodeOp *op)=0
Emit a STORE operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1737
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:1683
TypeOpLoad(TypeFactory *t)
Constructor.
Definition: typeop.cc:358
TypeOpNotEqual(TypeFactory *t)
Constructor.
Definition: typeop.cc:843
virtual void opCbranch(const PcodeOp *op)=0
Emit a CBRANCH operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:542
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:654
Information about the INT_EQUAL op-code.
Definition: typeop.hh:302
Information about the NEW op-code.
Definition: typeop.hh:774
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:757
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:353
A generic unary operator: one input and one output.
Definition: typeop.hh:173
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:668
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:597
Information about the INT_ZEXT op-code.
Definition: typeop.hh:350
TypeOpIntSdiv(TypeFactory *t)
Constructor.
Definition: typeop.cc:1280
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1139
virtual void opIntSdiv(const PcodeOp *op)=0
Emit a INT_SDIV operator.
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:310
Information about the FLOAT_EQUAL op-code.
Definition: typeop.hh:546
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1111
TypeOpBoolAnd(TypeFactory *t)
Constructor.
Definition: typeop.cc:1354
TypeOpNew(TypeFactory *t)
Constructor.
Definition: typeop.cc:1822
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:714
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:544
Information about the LOAD op-code.
Definition: typeop.hh:216
TypeOpCall(TypeFactory *t)
Constructor.
Definition: typeop.cc:537
uintb evaluateBinary(int4 sizeout, int4 sizein, uintb in1, uintb in2) const
Emulate the binary op-code on an input value.
Definition: typeop.hh:78
A strategy for applying type casts.
Definition: cast.hh:40
virtual void opCopy(const PcodeOp *op)=0
Emit a COPY operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:285
TypeOpPopcount(TypeFactory *t)
Constructor.
Definition: typeop.cc:1876
TypeOpIntRem(TypeFactory *t)
Constructor.
Definition: typeop.cc:1300
TypeOpIntOr(TypeFactory *t)
Constructor.
Definition: typeop.cc:1117
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:802
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1720
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1229
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.hh:140
TypeOpCbranch(TypeFactory *t)
Constructor.
Definition: typeop.cc:491
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:232
virtual void opCast(const PcodeOp *op)=0
Emit a CAST operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1829
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1689
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:212
TypeOpFloatNan(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1396
Information about the INT_SBORROW op-code.
Definition: typeop.hh:400
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:222
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:337
virtual void opSubpiece(const PcodeOp *op)=0
Emit a SUBPIECE operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:952
Information about the FLOAT_NAN op-code.
Definition: typeop.hh:574
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1799
The base datatype class for the decompiler.
Definition: type.hh:62
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:313
Container class for all Datatype objects in an Architecture.
Definition: type.hh:396
TypeOpReturn(TypeFactory *t)
Constructor.
Definition: typeop.cc:774
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:344
TypeOpFloatFloor(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1480
TypeOpIntXor(TypeFactory *t)
Constructor.
Definition: typeop.cc:1089
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const =0
Push the specific PcodeOp to the emitter's RPN stack.
Information about the INT_2COMP op-code.
Definition: typeop.hh:408
virtual void opReturn(const PcodeOp *op)=0
Emit a RETURN operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1288
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:570
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:612
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:451
Information about the FLOAT_CEIL op-code.
Definition: typeop.hh:651
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:412
Information about the INT_DIV op-code.
Definition: typeop.hh:486
virtual void opFloatFloat2Float(const PcodeOp *op)=0
Emit a FLOAT_FLOAT2FLOAT operator.
A generic binary operator: two inputs and one output.
Definition: typeop.hh:156
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:549
TypeOpFloatAbs(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1438
TypeOpBranch(TypeFactory *t)
Constructor.
Definition: typeop.cc:477
TypeOpEqual(TypeFactory *t)
Constructor.
Definition: typeop.cc:822
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:1635
TypeOpPtradd(TypeFactory *t)
Constructor.
Definition: typeop.cc:1622
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:926
TypeOpIntZext(TypeFactory *t)
Constructor.
Definition: typeop.cc:936
Information about the RETURN op-code.
Definition: typeop.hh:293
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:1588
virtual void opFloatRound(const PcodeOp *op)=0
Emit a FLOAT_ROUND operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:240
The interface to a translation engine for a processor.
Definition: translate.hh:294
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1629
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1237
virtual void opIntLess(const PcodeOp *op)=0
Emit a INT_LESS operator.
TypeOpIntSext(TypeFactory *t)
Constructor.
Definition: typeop.cc:962
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:661
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:528
static void registerInstructions(vector< TypeOp * > &inst, TypeFactory *tlst, const Translate *trans)
Build a map from op-code value to the TypeOp information objects.
Definition: typeop.cc:23
Information about the FLOAT_SQRT op-code.
Definition: typeop.hh:623
Information about the BOOL_XOR op-code.
Definition: typeop.hh:525
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:419
TypeOpFloatFloat2Float(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1459
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:684
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1187
virtual void opFloatFloor(const PcodeOp *op)=0
Emit a FLOAT_FLOOR operator.
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:1793
virtual void opPtradd(const PcodeOp *op)=0
Emit a PTRADD operator.
virtual void opLoad(const PcodeOp *op)=0
Emit a LOAD operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1760
virtual void opPopcountOp(const PcodeOp *op)=0
Emit a POPCOUNT operator.
TypeFactory * tlst
Pointer to data-type factory.
Definition: typeop.hh:44
OpCode
The op-code defining a specific p-code operation (PcodeOp)
Definition: opcodes.hh:35
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:489
TypeOpFloatNeg(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1431
virtual void opIntMult(const PcodeOp *op)=0
Emit a INT_MULT operator.
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1570
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:890
TypeOpFloatSqrt(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1445
virtual void opMultiequal(const PcodeOp *op)=0
Emit a MULTIEQUAL operator.
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:284
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:178
virtual void opIntSless(const PcodeOp *op)=0
Emit a INT_SLESS operator.
TypeOpPiece(TypeFactory *t)
Constructor.
Definition: typeop.cc:1554
Information about the INT_SEXT op-code.
Definition: typeop.hh:359
TypeOpIntSlessEqual(TypeFactory *t)
Constructor.
Definition: typeop.cc:882
virtual void opIntAdd(const PcodeOp *op)=0
Emit a INT_ADD operator.
TypeOpIntAnd(TypeFactory *t)
Constructor.
Definition: typeop.cc:1103
Information about the POPCOUNT op-code.
Definition: typeop.hh:799
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:268
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:1779
virtual void opFloatCeil(const PcodeOp *op)=0
Emit a FLOAT_CEIL operator.
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1010
virtual void opIntXor(const PcodeOp *op)=0
Emit a INT_XOR operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:275
virtual void opIntNotEqual(const PcodeOp *op)=0
Emit a INT_NOTEQUAL operator.
virtual void opPtrsub(const PcodeOp *op)=0
Emit a PTRSUB operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1204
Information about the BOOL_AND op-code.
Definition: typeop.hh:532
Classes for printing tokens in a high-level language.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:336
Information about the INT_RIGHT op-code.
Definition: typeop.hh:457
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:622
virtual void opIntNegate(const PcodeOp *op)=0
Emit a INT_NEGATE operator.
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:605
virtual void opIndirect(const PcodeOp *op)=0
Emit a INDIRECT operator.
virtual void opFloatSub(const PcodeOp *op)=0
Emit a FLOAT_SUB operator.
TypeOpFloatLess(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1382
TypeOpIntRight(TypeFactory *t)
Constructor.
Definition: typeop.cc:1156
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:498
virtual uintb evaluateUnary(int4 sizeout, int4 sizein, uintb in1) const
Emulate the unary op-code on an input value.
Definition: opbehavior.cc:111
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1254
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:535
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:577
virtual ~TypeOp(void)
Destructor.
Definition: typeop.cc:161
Information about the PTRADD op-code.
Definition: typeop.hh:719
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:872
Associate data-type and behavior information with a specific p-code op-code.
Definition: typeop.hh:37
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:397
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:591
Information about the FLOAT_ADD op-code.
Definition: typeop.hh:581
uint4 opflags
Cached pcode-op properties for this op-code.
Definition: typeop.hh:46
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:1038
virtual void opIntSext(const PcodeOp *op, const PcodeOp *readOp)=0
Emit a INT_SEXT operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1659
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:726
virtual void opIntEqual(const PcodeOp *op)=0
Emit a INT_EQUAL operator.
Information about the INT_LESSEQUAL op-code.
Definition: typeop.hh:342
uint4 addlflags
Additional properties.
Definition: typeop.hh:47
virtual void opSegmentOp(const PcodeOp *op)=0
Emit a SEGMENTOP operator.
virtual void opBoolAnd(const PcodeOp *op)=0
Emit a BOOL_AND operator.
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1268
virtual void printRaw(ostream &s, const PcodeOp *op)=0
Print (for debugging purposes) this specific PcodeOp to the stream.
virtual void opIntSborrow(const PcodeOp *op)=0
Emit a INT_SBORROW operator.
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:753
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:513
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1308
TypeOpFloatEqual(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1368
TypeOpIntSright(TypeFactory *t)
Constructor.
Definition: typeop.cc:1196
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:371
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:296
virtual uintb recoverInputBinary(int4 slot, int4 sizeout, uintb out, int4 sizein, uintb in) const
Reverse the binary op-code operation, recovering an input value.
Definition: opbehavior.cc:149
Information about the FLOAT_TRUNC op-code.
Definition: typeop.hh:644
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:435
TypeOpIntCarry(TypeFactory *t)
Constructor.
Definition: typeop.cc:1016
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:619
uintb recoverInputBinary(int4 slot, int4 sizeout, uintb out, int4 sizein, uintb in) const
Reverse the binary op-code operation, recovering a constant input value.
Definition: typeop.hh:91
virtual void opIntDiv(const PcodeOp *op)=0
Emit a INT_DIV operator.
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:564
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:1172
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1097
A generic functional operator.
Definition: typeop.hh:190
@ inherits_sign
Operator token inherits signedness from its inputs.
Definition: typeop.hh:40
Information about the FLOAT_NOTEQUAL op-code.
Definition: typeop.hh:553
Information about the INT_SDIV op-code.
Definition: typeop.hh:494
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:1561
TypeOpBoolNegate(TypeFactory *t)
Constructor.
Definition: typeop.cc:1340
virtual Datatype * getInputLocal(const PcodeOp *op, int4 slot) const
Find the minimal (or suggested) data-type of an input to this op-code.
Definition: typeop.cc:800
TypeOpIntNegate(TypeFactory *t)
Constructor.
Definition: typeop.cc:1075
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:695
virtual void opCallother(const PcodeOp *op)=0
Emit a CALLOTHER operator.
Information about the INT_ADD op-code.
Definition: typeop.hh:368
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:1023
Information about the FLOAT_LESS op-code.
Definition: typeop.hh:560
TypeOpStore(TypeFactory *t)
Constructor.
Definition: typeop.cc:423
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1125
type_metatype
Definition: type.hh:33
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:598
Information about the INT_OR op-code.
Definition: typeop.hh:440
Information about the BOOL_OR op-code.
Definition: typeop.hh:539
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:694
Information about the CPOOLREF op-code.
Definition: typeop.hh:762
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:781
TypeOpIndirect(TypeFactory *t)
Constructor.
Definition: typeop.cc:1519
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:274
virtual void opIntLessEqual(const PcodeOp *op)=0
Emit a INT_LESSEQUAL operator.
Information about the FLOAT_FLOAT2FLOAT op-code.
Definition: typeop.hh:637
TypeOpFloatTrunc(TypeFactory *t, const Translate *trans)
Constructor.
Definition: typeop.cc:1466
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:563
virtual string getOperatorName(const PcodeOp *op) const
Get the name of the op-code as it should be displayed in context.
Definition: typeop.cc:969
bool markExplicitUnsigned(PcodeOp *op, int4 slot) const
Check if a constant input should be explicitly labeled as unsigned.
Definition: typeop.cc:230
virtual void opFloatInt2Float(const PcodeOp *op)=0
Emit a FLOAT_INT2FLOAT operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:510
virtual Datatype * getOutputLocal(const PcodeOp *op) const
Find the minimal (or suggested) data-type of an output to this op-code.
Definition: typeop.cc:262
Information about the INT_REM op-code.
Definition: typeop.hh:502
Information about the INT_SLESS op-code.
Definition: typeop.hh:318
virtual uintb recoverInputUnary(int4 sizeout, uintb out, int4 sizein) const
Reverse the unary op-code operation, recovering the input value.
Definition: opbehavior.cc:135
TypeOpInsert(TypeFactory *t)
Constructor.
Definition: typeop.cc:1846
virtual Datatype * getOutputToken(const PcodeOp *op, CastStrategy *castStrategy) const
Find the data-type of the output that would be assigned by a compiler.
Definition: typeop.cc:1641
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:497
Information about the FLOAT_FLOOR op-code.
Definition: typeop.hh:658
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.hh:777
virtual void opBoolOr(const PcodeOp *op)=0
Emit a BOOL_OR operator.
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:484
virtual void push(PrintLanguage *lng, const PcodeOp *op, const PcodeOp *readOp) const
Push the specific PcodeOp to the emitter's RPN stack.
Definition: typeop.hh:403
virtual Datatype * getInputCast(const PcodeOp *op, int4 slot, const CastStrategy *castStrategy) const
Find the data-type of the input to a specific PcodeOp.
Definition: typeop.cc:365
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:1501
Information about the INT_XOR op-code.
Definition: typeop.hh:424
virtual void opBoolNegate(const PcodeOp *op)=0
Emit a BOOL_NEGATE operator.
virtual void opCallind(const PcodeOp *op)=0
Emit a CALLIND operator.
Information about the INT_SRIGHT op-code.
Definition: typeop.hh:467
virtual void printRaw(ostream &s, const PcodeOp *op)
Print (for debugging purposes) this specific PcodeOp to the stream.
Definition: typeop.cc:668