CACAO
Data Structures | Macros | Enumerations | Functions
instruction.hpp File Reference

Go to the source code of this file.

Data Structures

union  branch_target_t
 
struct  lookup_target_t
 
union  s1_operand_t
 
union  s2_operand_t
 
union  s3_operand_t
 
union  val_operand_t
 
union  dst_operand_t
 
union  flags_operand_t
 
struct  instruction
 
struct  insinfo_inline
 

Macros

#define INS_FLAG_ID_SHIFT   5
 
#define INS_FLAG_ID_MASK   (~0 << INS_FLAG_ID_SHIFT)
 
#define INSTRUCTION_STARTS_BASICBLOCK(iptr)   ((iptr)->flags.bits & INS_FLAG_BASICBLOCK)
 
#define INSTRUCTION_IS_RESOLVED(iptr)   (!((iptr)->flags.bits & INS_FLAG_UNRESOLVED))
 
#define INSTRUCTION_IS_UNRESOLVED(iptr)   ((iptr)->flags.bits & INS_FLAG_UNRESOLVED)
 
#define INSTRUCTION_MUST_CHECK(iptr)   ((iptr)->flags.bits & INS_FLAG_CHECK)
 
#define INSTRUCTION_GET_FIELDREF(iptr, fref)
 
#define INSTRUCTION_GET_METHODREF(iptr, mref)
 
#define INSTRUCTION_GET_METHODDESC(iptr, md)
 

Enumerations

enum  InstructionFlag {
  INS_FLAG_BASICBLOCK = 0x01, INS_FLAG_UNRESOLVED = 0x02, INS_FLAG_CLASS = 0x04, INS_FLAG_ARRAY = 0x08,
  INS_FLAG_CHECK = 0x10, INS_FLAG_KILL_PREV = 0x04, INS_FLAG_KILL_NEXT = 0x08, INS_FLAG_RETADDR = 0x10
}
 

Functions

methoddescinstruction_call_site (const instruction *iptr)
 
Type instruction_call_site_return_type (const instruction *iptr)
 
static bool instruction_has_dst (const instruction *iptr)
 

Macro Definition Documentation

#define INS_FLAG_ID_MASK   (~0 << INS_FLAG_ID_SHIFT)

Definition at line 136 of file instruction.hpp.

#define INS_FLAG_ID_SHIFT   5

Definition at line 135 of file instruction.hpp.

#define INSTRUCTION_GET_FIELDREF (   iptr,
  fref 
)
Value:
do { \
if (iptr->flags.bits & INS_FLAG_UNRESOLVED) \
fref = iptr->sx.s23.s3.uf->fieldref; \
else \
fref = iptr->sx.s23.s3.fmiref; \
} while (0)

Definition at line 183 of file instruction.hpp.

#define INSTRUCTION_GET_METHODDESC (   iptr,
  md 
)
Value:
do { \
if (iptr->flags.bits & INS_FLAG_UNRESOLVED) \
md = iptr->sx.s23.s3.um->methodref->parseddesc.md; \
else \
md = iptr->sx.s23.s3.fmiref->parseddesc.md; \
} while (0)

Definition at line 199 of file instruction.hpp.

#define INSTRUCTION_GET_METHODREF (   iptr,
  mref 
)
Value:
do { \
if (iptr->flags.bits & INS_FLAG_UNRESOLVED) \
mref = iptr->sx.s23.s3.um->methodref; \
else \
mref = iptr->sx.s23.s3.fmiref; \
} while (0)

Definition at line 191 of file instruction.hpp.

#define INSTRUCTION_IS_RESOLVED (   iptr)    (!((iptr)->flags.bits & INS_FLAG_UNRESOLVED))

Definition at line 174 of file instruction.hpp.

#define INSTRUCTION_IS_UNRESOLVED (   iptr)    ((iptr)->flags.bits & INS_FLAG_UNRESOLVED)

Definition at line 177 of file instruction.hpp.

#define INSTRUCTION_MUST_CHECK (   iptr)    ((iptr)->flags.bits & INS_FLAG_CHECK)

Definition at line 180 of file instruction.hpp.

#define INSTRUCTION_STARTS_BASICBLOCK (   iptr)    ((iptr)->flags.bits & INS_FLAG_BASICBLOCK)

Definition at line 171 of file instruction.hpp.

Enumeration Type Documentation

Enumerator
INS_FLAG_BASICBLOCK 
INS_FLAG_UNRESOLVED 
INS_FLAG_CLASS 
INS_FLAG_ARRAY 
INS_FLAG_CHECK 
INS_FLAG_KILL_PREV 
INS_FLAG_KILL_NEXT 
INS_FLAG_RETADDR 

Definition at line 123 of file instruction.hpp.

Function Documentation

methoddesc* instruction_call_site ( const instruction iptr)

Definition at line 31 of file instruction.cpp.

Type instruction_call_site_return_type ( const instruction iptr)

Definition at line 44 of file instruction.cpp.

static bool instruction_has_dst ( const instruction iptr)
inlinestatic

Definition at line 243 of file instruction.hpp.