IInstruction Type
Represents a single machine instruction in a platform-independent manner. It provides useful methods for accessing useful information about the instruction.
Instance members
Instance member | Description |
|
|
Full Usage:
this.Decompose
Parameters:
IDisasmBuilder
Returns: AsmWord[]
Returns an array of AsmWords.
Modifiers: abstract |
|
Full Usage:
this.DirectBranchTarget
Parameters:
byref<Addr>
Returns: bool
Returns true if a target address exists. Otherwise, returns false.
Modifiers: abstract |
|
Full Usage:
this.Disasm
Returns: string
Returns a disassembled string.
Modifiers: abstract |
|
Full Usage:
this.Disasm
Parameters:
IDisasmBuilder
-
When this parameter is given, we disassemble the instruction with the
given name builder to disassemble the instruction. It can resolve symbols
depending on the implementation of the builder.
Returns: string
Returns a disassembled string.
Modifiers: abstract |
|
|
Returns an array of possible next instruction addresses. For branch instructions, the returned sequence includes jump target(s). For call instructions, the sequence does not include the return address (i.e., the address of the instruction following the call instruction). For regular instructions, the sequence is a singleton of the fall-through address. This function does not resolve indirect branch targets.
|
Full Usage:
this.Immediate
Parameters:
byref<int64>
Returns: bool
Returns true if an immediate exists. Otherwise, returns false.
Modifiers: abstract |
|
Full Usage:
this.IndirectTrampolineAddr
Parameters:
byref<Addr>
Returns: bool
Returns true if a trampoline address exists. Otherwise, returns false.
Modifiers: abstract |
|
Full Usage:
this.InterruptNum
Parameters:
byref<int64>
Returns: bool
Modifiers: abstract |
|
Full Usage:
this.IsBranch
Returns: bool
Returns true if this is a branch instruction.
Modifiers: abstract |
|
Full Usage:
this.IsCJmpOnTrue
Returns: bool
Returns true if this is a conditional branch instruction, and jumps to
the target when the predicate is true.
Modifiers: abstract |
|
Full Usage:
this.IsCall
Returns: bool
Returns true if this is a call instruction.
Modifiers: abstract |
|
Full Usage:
this.IsCondBranch
Returns: bool
Returns true if this is a conditional branch instruction.
Modifiers: abstract |
|
Full Usage:
this.IsDirectBranch
Returns: bool
Returns true if this is a direct branch instruction.
Modifiers: abstract |
|
Full Usage:
this.IsExit
Returns: bool
Returns true if this instruction should be at the end of the
corresponding basic block.
Modifiers: abstract |
|
Full Usage:
this.IsIndirectBranch
Returns: bool
Returns true if this is an indirect branch instruction.
Modifiers: abstract |
|
Full Usage:
this.IsInlinedAssembly
Returns: bool
Modifiers: abstract |
|
Full Usage:
this.IsInterrupt
Returns: bool
Returns true if this is an interrupt instruction
Modifiers: abstract |
|
Full Usage:
this.IsModeChanging
Returns: bool
Returns true if this is a mode-changing instruction.
Modifiers: abstract |
|
Full Usage:
this.IsNop
Returns: bool
Returns true if this instruction is a NO-OP.
Modifiers: abstract |
|
Full Usage:
this.IsPop
Returns: bool
Returns true if this is a pop instruction.
Modifiers: abstract |
|
Full Usage:
this.IsPush
Returns: bool
Returns true if this is a push instruction.
Modifiers: abstract |
|
Full Usage:
this.IsRET
Returns: bool
Returns true if this is a return instruction.
Modifiers: abstract |
|
Full Usage:
this.IsTerminator
Parameters:
IInstruction
Returns: bool
Returns true if this instruction should be at the end of the corresponding
basic block.
Modifiers: abstract |
Does this instruction end a basic block? For example, this function returns true for branch instructions and exit instructions. We also consider system call instructions as a terminator. Note that this method takes the previous instruction as an argument, because instructions that are in a delay slot of a branch instruction should be considered as terminators in some architectures (e.g., MIPS).
|
Full Usage:
this.Length
Returns: uint32
Modifiers: abstract |
|
Full Usage:
this.MemoryDereferences
Parameters:
byref<Addr[]>
Returns: bool
Returns if there exists any direct memory accesses. If there are
direct memory accesses, the `addrs` parameter will be filled with the
addresses of the direct memory accesses.
Modifiers: abstract |
Returns an array of addresses that this instruction directly dereferences
from memory. This includes PC-relative memory accesses, such as
|
Full Usage:
this.Translate
Parameters:
ILowUIRBuilder
Returns: Stmt[]
Returns an array of LowUIR statements.
Modifiers: abstract |
|
Full Usage:
this.TranslateToList
Parameters:
ILowUIRBuilder
Returns: List<Stmt>
Returns a list of LowUIR statements.
Modifiers: abstract |
|