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  | 
          
            
  | 
        
            B2R2