LLDB mainline
lldb_private::EmulateInstructionARM Class Reference

#include <EmulateInstructionARM.h>

Inheritance diagram for lldb_private::EmulateInstructionARM:
[legend]

Classes

struct  AddWithCarryResult
struct  ARMOpcode

Public Types

enum  ARMEncoding {
  eEncodingA1 , eEncodingA2 , eEncodingA3 , eEncodingA4 ,
  eEncodingA5 , eEncodingT1 , eEncodingT2 , eEncodingT3 ,
  eEncodingT4 , eEncodingT5
}
enum  Mode { eModeInvalid = -1 , eModeARM , eModeThumb }
Public Types inherited from lldb_private::EmulateInstruction
enum  ContextType {
  eContextInvalid = 0 , eContextReadOpcode , eContextImmediate , eContextPushRegisterOnStack ,
  eContextPopRegisterOffStack , eContextAdjustStackPointer , eContextSetFramePointer , eContextRestoreStackPointer ,
  eContextAdjustBaseRegister , eContextAdjustPC , eContextRegisterPlusOffset , eContextRegisterStore ,
  eContextRegisterLoad , eContextRelativeBranchImmediate , eContextAbsoluteBranchRegister , eContextSupervisorCall ,
  eContextTableBranchReadMemory , eContextWriteRegisterRandomBits , eContextWriteMemoryRandomBits , eContextArithmetic ,
  eContextAdvancePC , eContextReturnFromException
}
enum  InfoType {
  eInfoTypeRegisterPlusOffset , eInfoTypeRegisterPlusIndirectOffset , eInfoTypeRegisterToRegisterPlusOffset , eInfoTypeRegisterToRegisterPlusIndirectOffset ,
  eInfoTypeRegisterRegisterOperands , eInfoTypeOffset , eInfoTypeRegister , eInfoTypeImmediate ,
  eInfoTypeImmediateSigned , eInfoTypeAddress , eInfoTypeISAAndImmediate , eInfoTypeISAAndImmediateSigned ,
  eInfoTypeISA , eInfoTypeNoArgs
}
typedef size_t(* ReadMemoryCallback) (EmulateInstruction *instruction, void *baton, const Context &context, lldb::addr_t addr, void *dst, size_t length)
typedef size_t(* WriteMemoryCallback) (EmulateInstruction *instruction, void *baton, const Context &context, lldb::addr_t addr, const void *dst, size_t length)
typedef bool(* ReadRegisterCallback) (EmulateInstruction *instruction, void *baton, const RegisterInfo *reg_info, RegisterValue &reg_value)
typedef bool(* WriteRegisterCallback) (EmulateInstruction *instruction, void *baton, const Context &context, const RegisterInfo *reg_info, const RegisterValue &reg_value)
typedef uint32_t InstructionCondition

Public Member Functions

llvm::StringRef GetPluginName () override
bool SetTargetTriple (const ArchSpec &arch) override
 EmulateInstructionARM (const ArchSpec &arch)
bool SupportsEmulatingInstructionsOfType (InstructionType inst_type) override
virtual bool SetArchitecture (const ArchSpec &arch)
bool ReadInstruction () override
bool SetInstruction (const Opcode &insn_opcode, const Address &inst_addr, Target *target) override
bool EvaluateInstruction (uint32_t evaluate_options) override
InstructionCondition GetInstructionCondition () override
bool TestEmulation (Stream &out_stream, ArchSpec &arch, OptionValueDictionary *test_data) override
std::optional< RegisterInfoGetRegisterInfo (lldb::RegisterKind reg_kind, uint32_t reg_num) override
bool CreateFunctionEntryUnwind (UnwindPlan &unwind_plan) override
uint32_t ArchVersion ()
bool ConditionPassed (const uint32_t opcode)
uint32_t CurrentCond (const uint32_t opcode)
bool InITBlock ()
bool LastInITBlock ()
bool BadMode (uint32_t mode)
bool CurrentModeIsPrivileged ()
void CPSRWriteByInstr (uint32_t value, uint32_t bytemask, bool affect_execstate)
bool BranchWritePC (const Context &context, uint32_t addr)
bool BXWritePC (Context &context, uint32_t addr)
bool LoadWritePC (Context &context, uint32_t addr)
bool ALUWritePC (Context &context, uint32_t addr)
Mode CurrentInstrSet ()
bool SelectInstrSet (Mode arm_or_thumb)
bool WriteBits32Unknown (int n)
bool WriteBits32UnknownToMemory (lldb::addr_t address)
bool UnalignedSupport ()
AddWithCarryResult AddWithCarry (uint32_t x, uint32_t y, uint8_t carry_in)
uint32_t ReadCoreReg (uint32_t regnum, bool *success)
bool WriteCoreRegOptionalFlags (Context &context, const uint32_t result, const uint32_t Rd, bool setflags, const uint32_t carry=~0u, const uint32_t overflow=~0u)
bool WriteCoreReg (Context &context, const uint32_t result, const uint32_t Rd)
bool WriteFlags (Context &context, const uint32_t result, const uint32_t carry=~0u, const uint32_t overflow=~0u)
uint64_t MemARead (EmulateInstruction::Context &context, lldb::addr_t address, uint32_t size, uint64_t fail_value, bool *success_ptr)
bool MemAWrite (EmulateInstruction::Context &context, lldb::addr_t address, uint64_t data_val, uint32_t size)
uint64_t MemURead (EmulateInstruction::Context &context, lldb::addr_t address, uint32_t size, uint64_t fail_value, bool *success_ptr)
bool MemUWrite (EmulateInstruction::Context &context, lldb::addr_t address, uint64_t data_val, uint32_t size)
Public Member Functions inherited from lldb_private::EmulateInstruction
 EmulateInstruction (const ArchSpec &arch)
 ~EmulateInstruction () override=default
virtual std::optional< uint32_t > GetLastInstrSize ()
std::optional< RegisterValueReadRegister (const RegisterInfo &reg_info)
uint64_t ReadRegisterUnsigned (const RegisterInfo &reg_info, uint64_t fail_value, bool *success_ptr)
bool WriteRegister (const Context &context, const RegisterInfo &ref_info, const RegisterValue &reg_value)
bool WriteRegisterUnsigned (const Context &context, const RegisterInfo &reg_info, uint64_t reg_value)
bool ReadRegister (lldb::RegisterKind reg_kind, uint32_t reg_num, RegisterValue &reg_value)
bool WriteRegister (const Context &context, lldb::RegisterKind reg_kind, uint32_t reg_num, const RegisterValue &reg_value)
uint64_t ReadRegisterUnsigned (lldb::RegisterKind reg_kind, uint32_t reg_num, uint64_t fail_value, bool *success_ptr)
bool WriteRegisterUnsigned (const Context &context, lldb::RegisterKind reg_kind, uint32_t reg_num, uint64_t reg_value)
size_t ReadMemory (const Context &context, lldb::addr_t addr, void *dst, size_t dst_len)
uint64_t ReadMemoryUnsigned (const Context &context, lldb::addr_t addr, size_t byte_size, uint64_t fail_value, bool *success_ptr)
bool WriteMemory (const Context &context, lldb::addr_t addr, const void *src, size_t src_len)
bool WriteMemoryUnsigned (const Context &context, lldb::addr_t addr, uint64_t uval, size_t uval_byte_size)
uint32_t GetAddressByteSize () const
lldb::ByteOrder GetByteOrder () const
const OpcodeGetOpcode () const
lldb::addr_t GetAddress () const
const ArchSpecGetArchitecture () const
void SetBaton (void *baton)
void SetCallbacks (ReadMemoryCallback read_mem_callback, WriteMemoryCallback write_mem_callback, ReadRegisterCallback read_reg_callback, WriteRegisterCallback write_reg_callback)
void SetReadMemCallback (ReadMemoryCallback read_mem_callback)
void SetWriteMemCallback (WriteMemoryCallback write_mem_callback)
void SetReadRegCallback (ReadRegisterCallback read_reg_callback)
void SetWriteRegCallback (WriteRegisterCallback write_reg_callback)
std::optional< lldb::addr_tReadPC ()
bool WritePC (lldb::addr_t addr)
Public Member Functions inherited from lldb_private::PluginInterface
 PluginInterface ()=default
virtual ~PluginInterface ()=default
 PluginInterface (const PluginInterface &)=delete
PluginInterfaceoperator= (const PluginInterface &)=delete

Static Public Member Functions

static void Initialize ()
static void Terminate ()
static llvm::StringRef GetPluginNameStatic ()
static llvm::StringRef GetPluginDescriptionStatic ()
static lldb_private::EmulateInstructionCreateInstance (const lldb_private::ArchSpec &arch, InstructionType inst_type)
static bool SupportsEmulatingInstructionsOfTypeStatic (InstructionType inst_type)
Static Public Member Functions inherited from lldb_private::EmulateInstruction
static EmulateInstructionFindPlugin (const ArchSpec &arch, InstructionType supported_inst_type, const char *plugin_name)
static const char * TranslateRegister (lldb::RegisterKind reg_kind, uint32_t reg_num, std::string &reg_name)
static size_t ReadMemoryFrame (EmulateInstruction *instruction, void *baton, const Context &context, lldb::addr_t addr, void *dst, size_t length)
static size_t WriteMemoryFrame (EmulateInstruction *instruction, void *baton, const Context &context, lldb::addr_t addr, const void *dst, size_t length)
static bool ReadRegisterFrame (EmulateInstruction *instruction, void *baton, const RegisterInfo *reg_info, RegisterValue &reg_value)
static bool WriteRegisterFrame (EmulateInstruction *instruction, void *baton, const Context &context, const RegisterInfo *reg_info, const RegisterValue &reg_value)
static size_t ReadMemoryDefault (EmulateInstruction *instruction, void *baton, const Context &context, lldb::addr_t addr, void *dst, size_t length)
static size_t WriteMemoryDefault (EmulateInstruction *instruction, void *baton, const Context &context, lldb::addr_t addr, const void *dst, size_t length)
static bool ReadRegisterDefault (EmulateInstruction *instruction, void *baton, const RegisterInfo *reg_info, RegisterValue &reg_value)
static bool WriteRegisterDefault (EmulateInstruction *instruction, void *baton, const Context &context, const RegisterInfo *reg_info, const RegisterValue &reg_value)
static bool GetBestRegisterKindAndNumber (const RegisterInfo *reg_info, lldb::RegisterKind &reg_kind, uint32_t &reg_num)
static uint32_t GetInternalRegisterNumber (RegisterContext *reg_ctx, const RegisterInfo &reg_info)
static std::unique_ptr< SingleStepBreakpointLocationsPredictorCreateBreakpointLocationPredictor (std::unique_ptr< EmulateInstruction > emulator_up)

Protected Types

enum  ARMInstrSize { eSize16 , eSize32 }
Protected Types inherited from lldb_private::EmulateInstruction
using BreakpointLocationsPredictorCreator

Protected Member Functions

uint32_t GetFramePointerRegisterNumber () const
uint32_t GetFramePointerDWARFRegisterNumber () const
bool EmulatePUSH (const uint32_t opcode, const ARMEncoding encoding)
bool EmulatePOP (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDRdSPImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMOVRdSP (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMOVLowHigh (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRRtPCRelative (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDSPImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDSPRm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBLXImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBLXRm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBXRm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBXJRm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBR7IPImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBIPSPImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBSPImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBSPReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRRtSP (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVPUSH (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVPOP (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSVC (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateIT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateNop (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateCB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateTB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDImmThumb (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDImmARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADDRegShift (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMOVRdRm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMOVRdImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateCMPImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateCMPReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateASRImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateASRReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLSLImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLSLReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLSRImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLSRReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRORImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRORReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRRX (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateShiftImm (const uint32_t opcode, const ARMEncoding encoding, ARM_ShifterType shift_type)
bool EmulateShiftReg (const uint32_t opcode, const ARMEncoding encoding, ARM_ShifterType shift_type)
bool EmulateLDM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDMDA (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDMDB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDMIB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRRtRnImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRImmediateARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRLiteral (const uint32_t, const ARMEncoding encoding)
bool EmulateLDRRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRBImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRBImmediateARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRBLiteral (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRBRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRBT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRDImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRDLiteral (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRDRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDREX (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDREXB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDREXD (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDREXH (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRHImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRHImmediateARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRHLiteral (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRHRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRHT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSBImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSBLiteral (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSBRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSBT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSHImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSHLiteral (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSHRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRSHT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateLDRT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTMDA (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTMDB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTMIB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRThumb (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRImmARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRBThumb (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRBImmARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRBReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRBT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRDImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRDReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTREX (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTREXB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTREXD (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTREXH (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRHImmThumb (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRHImmARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRHRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRHT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSTRT (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADCImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADCReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateADR (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateANDImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateANDReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBICImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBICReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateBXJ (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateCMNImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateCMNReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateEORImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateEORReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMUL (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMVNImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateMVNReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateORRImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateORRReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulatePLDImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulatePLIImmediate (const uint32_t opcode, const ARMEncoding encoding)
bool EmulatePLIRegister (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRSBImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRSBReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRSCImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRSCReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSBCImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSBCReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBImmThumb (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBImmARM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBRegShift (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSXTB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSXTH (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateTEQImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateTEQReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateTSTImm (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateTSTReg (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateUXTB (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateUXTH (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateRFE (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVLDM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVSTM (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVLD1Multiple (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVLD1Single (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVLD1SingleAll (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVST1Multiple (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVST1Single (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVLDR (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateVSTR (const uint32_t opcode, const ARMEncoding encoding)
bool EmulateSUBSPcLrEtc (const uint32_t opcode, const ARMEncoding encoding)
BreakpointLocationsPredictorCreator GetSingleStepBreakpointLocationsPredictorCreator () override

Static Protected Member Functions

static ARMOpcodeGetARMOpcodeForInstruction (const uint32_t opcode, uint32_t isa_mask)
static ARMOpcodeGetThumbOpcodeForInstruction (const uint32_t opcode, uint32_t isa_mask)

Protected Attributes

uint32_t m_arm_isa
Mode m_opcode_mode
uint32_t m_opcode_cpsr
uint32_t m_new_inst_cpsr
ITSession m_it_session
bool m_ignore_conditions
Protected Attributes inherited from lldb_private::EmulateInstruction
ArchSpec m_arch
void * m_baton = nullptr
ReadMemoryCallback m_read_mem_callback = &ReadMemoryDefault
WriteMemoryCallback m_write_mem_callback = &WriteMemoryDefault
ReadRegisterCallback m_read_reg_callback = &ReadRegisterDefault
WriteRegisterCallback m_write_reg_callback = &WriteRegisterDefault
lldb::addr_t m_addr = LLDB_INVALID_ADDRESS
Opcode m_opcode

Additional Inherited Members

Static Public Attributes inherited from lldb_private::EmulateInstruction
static const InstructionCondition UnconditionalCondition = UINT32_MAX

Detailed Description

Definition at line 56 of file EmulateInstructionARM.h.

Member Enumeration Documentation

◆ ARMEncoding

Enumerator
eEncodingA1 
eEncodingA2 
eEncodingA3 
eEncodingA4 
eEncodingA5 
eEncodingT1 
eEncodingT2 
eEncodingT3 
eEncodingT4 
eEncodingT5 

Definition at line 58 of file EmulateInstructionARM.h.

◆ ARMInstrSize

Enumerator
eSize16 
eSize32 

Definition at line 301 of file EmulateInstructionARM.h.

◆ Mode

Enumerator
eModeInvalid 
eModeARM 
eModeThumb 

Definition at line 100 of file EmulateInstructionARM.h.

Constructor & Destructor Documentation

◆ EmulateInstructionARM()

lldb_private::EmulateInstructionARM::EmulateInstructionARM ( const ArchSpec & arch)
inline

Member Function Documentation

◆ AddWithCarry()

◆ ALUWritePC()

◆ ArchVersion()

uint32_t EmulateInstructionARM::ArchVersion ( )

◆ BadMode()

bool EmulateInstructionARM::BadMode ( uint32_t mode)

Definition at line 13956 of file EmulateInstructionARM.cpp.

Referenced by CurrentModeIsPrivileged().

◆ BranchWritePC()

◆ BXWritePC()

◆ ConditionPassed()

bool EmulateInstructionARM::ConditionPassed ( const uint32_t opcode)

Definition at line 13844 of file EmulateInstructionARM.cpp.

References CurrentCond(), m_ignore_conditions, m_opcode_cpsr, MASK_CPSR_C, MASK_CPSR_N, MASK_CPSR_V, MASK_CPSR_Z, UINT32_MAX, and lldb_private::UnsignedBits().

Referenced by EmulateADCImm(), EmulateADCReg(), EmulateADDImmARM(), EmulateADDImmThumb(), EmulateADDRdSPImm(), EmulateADDReg(), EmulateADDRegShift(), EmulateADDSPImm(), EmulateADDSPRm(), EmulateADR(), EmulateANDImm(), EmulateANDReg(), EmulateASRImm(), EmulateASRReg(), EmulateB(), EmulateBICImm(), EmulateBICReg(), EmulateBLXImmediate(), EmulateBLXRm(), EmulateBXJRm(), EmulateBXRm(), EmulateCMNImm(), EmulateCMNReg(), EmulateCMPImm(), EmulateCMPReg(), EmulateEORImm(), EmulateEORReg(), EmulateLDM(), EmulateLDMDA(), EmulateLDMDB(), EmulateLDMIB(), EmulateLDRBImmediate(), EmulateLDRBLiteral(), EmulateLDRBRegister(), EmulateLDRDImmediate(), EmulateLDRDRegister(), EmulateLDRHImmediate(), EmulateLDRHLiteral(), EmulateLDRHRegister(), EmulateLDRImmediateARM(), EmulateLDRRegister(), EmulateLDRRtPCRelative(), EmulateLDRRtRnImm(), EmulateLDRSBImmediate(), EmulateLDRSBLiteral(), EmulateLDRSBRegister(), EmulateLDRSHImmediate(), EmulateLDRSHLiteral(), EmulateLDRSHRegister(), EmulateLSLImm(), EmulateLSLReg(), EmulateLSRImm(), EmulateLSRReg(), EmulateMOVRdImm(), EmulateMOVRdRm(), EmulateMOVRdSP(), EmulateMUL(), EmulateMVNImm(), EmulateMVNReg(), EmulateORRImm(), EmulateORRReg(), EmulatePOP(), EmulatePUSH(), EmulateRFE(), EmulateRORImm(), EmulateRORReg(), EmulateRRX(), EmulateRSBImm(), EmulateRSBReg(), EmulateRSCImm(), EmulateRSCReg(), EmulateSBCImm(), EmulateSBCReg(), EmulateShiftImm(), EmulateShiftReg(), EmulateSTM(), EmulateSTMDA(), EmulateSTMDB(), EmulateSTMIB(), EmulateSTRBImmARM(), EmulateSTRBThumb(), EmulateSTRDImm(), EmulateSTRDReg(), EmulateSTREX(), EmulateSTRHRegister(), EmulateSTRImmARM(), EmulateSTRRegister(), EmulateSTRRtSP(), EmulateSTRThumb(), EmulateSUBImmARM(), EmulateSUBImmThumb(), EmulateSUBIPSPImm(), EmulateSUBR7IPImm(), EmulateSUBReg(), EmulateSUBSPcLrEtc(), EmulateSUBSPImm(), EmulateSUBSPReg(), EmulateSVC(), EmulateSXTB(), EmulateSXTH(), EmulateTB(), EmulateTEQImm(), EmulateTEQReg(), EmulateTSTImm(), EmulateTSTReg(), EmulateUXTB(), EmulateUXTH(), EmulateVLD1Multiple(), EmulateVLD1Single(), EmulateVLD1SingleAll(), EmulateVLDM(), EmulateVLDR(), EmulateVPOP(), EmulateVPUSH(), EmulateVST1Multiple(), EmulateVST1Single(), EmulateVSTM(), and EmulateVSTR().

◆ CPSRWriteByInstr()

void EmulateInstructionARM::CPSRWriteByInstr ( uint32_t value,
uint32_t bytemask,
bool affect_execstate )

◆ CreateFunctionEntryUnwind()

◆ CreateInstance()

EmulateInstruction * EmulateInstructionARM::CreateInstance ( const lldb_private::ArchSpec & arch,
InstructionType inst_type )
static

◆ CurrentCond()

uint32_t EmulateInstructionARM::CurrentCond ( const uint32_t opcode)

◆ CurrentInstrSet()

◆ CurrentModeIsPrivileged()

bool EmulateInstructionARM::CurrentModeIsPrivileged ( )

Definition at line 13981 of file EmulateInstructionARM.cpp.

References BadMode(), lldb_private::Bits32(), and m_opcode_cpsr.

Referenced by CPSRWriteByInstr(), and EmulateRFE().

◆ EmulateADCImm()

◆ EmulateADCReg()

◆ EmulateADDImmARM()

◆ EmulateADDImmThumb()

◆ EmulateADDRdSPImm()

◆ EmulateADDReg()

◆ EmulateADDRegShift()

◆ EmulateADDSPImm()

◆ EmulateADDSPRm()

◆ EmulateADR()

◆ EmulateANDImm()

◆ EmulateANDReg()

◆ EmulateASRImm()

bool EmulateInstructionARM::EmulateASRImm ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateASRReg()

bool EmulateInstructionARM::EmulateASRReg ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateB()

◆ EmulateBICImm()

◆ EmulateBICReg()

◆ EmulateBLXImmediate()

◆ EmulateBLXRm()

◆ EmulateBXJ()

bool lldb_private::EmulateInstructionARM::EmulateBXJ ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateBXJRm()

◆ EmulateBXRm()

◆ EmulateCB()

◆ EmulateCMNImm()

◆ EmulateCMNReg()

◆ EmulateCMPImm()

◆ EmulateCMPReg()

◆ EmulateEORImm()

◆ EmulateEORReg()

◆ EmulateIT()

bool EmulateInstructionARM::EmulateIT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDM()

◆ EmulateLDMDA()

◆ EmulateLDMDB()

◆ EmulateLDMIB()

◆ EmulateLDRBImmediate()

◆ EmulateLDRBImmediateARM()

bool lldb_private::EmulateInstructionARM::EmulateLDRBImmediateARM ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRBLiteral()

◆ EmulateLDRBRegister()

◆ EmulateLDRBT()

bool lldb_private::EmulateInstructionARM::EmulateLDRBT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRDImmediate()

◆ EmulateLDRDLiteral()

bool lldb_private::EmulateInstructionARM::EmulateLDRDLiteral ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRDRegister()

◆ EmulateLDREX()

bool lldb_private::EmulateInstructionARM::EmulateLDREX ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDREXB()

bool lldb_private::EmulateInstructionARM::EmulateLDREXB ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDREXD()

bool lldb_private::EmulateInstructionARM::EmulateLDREXD ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDREXH()

bool lldb_private::EmulateInstructionARM::EmulateLDREXH ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRHImmediate()

◆ EmulateLDRHImmediateARM()

bool lldb_private::EmulateInstructionARM::EmulateLDRHImmediateARM ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRHLiteral()

◆ EmulateLDRHRegister()

◆ EmulateLDRHT()

bool lldb_private::EmulateInstructionARM::EmulateLDRHT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRImmediateARM()

◆ EmulateLDRLiteral()

bool lldb_private::EmulateInstructionARM::EmulateLDRLiteral ( const uint32_t ,
const ARMEncoding encoding )
protected

◆ EmulateLDRRegister()

◆ EmulateLDRRtPCRelative()

◆ EmulateLDRRtRnImm()

◆ EmulateLDRSBImmediate()

◆ EmulateLDRSBLiteral()

◆ EmulateLDRSBRegister()

◆ EmulateLDRSBT()

bool lldb_private::EmulateInstructionARM::EmulateLDRSBT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRSHImmediate()

◆ EmulateLDRSHLiteral()

◆ EmulateLDRSHRegister()

◆ EmulateLDRSHT()

bool lldb_private::EmulateInstructionARM::EmulateLDRSHT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLDRT()

bool lldb_private::EmulateInstructionARM::EmulateLDRT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLSLImm()

bool EmulateInstructionARM::EmulateLSLImm ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLSLReg()

bool EmulateInstructionARM::EmulateLSLReg ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLSRImm()

bool EmulateInstructionARM::EmulateLSRImm ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateLSRReg()

bool EmulateInstructionARM::EmulateLSRReg ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateMOVLowHigh()

bool EmulateInstructionARM::EmulateMOVLowHigh ( const uint32_t opcode,
const ARMEncoding encoding )
protected

Definition at line 1258 of file EmulateInstructionARM.cpp.

References EmulateMOVRdRm().

Referenced by GetThumbOpcodeForInstruction().

◆ EmulateMOVRdImm()

◆ EmulateMOVRdRm()

◆ EmulateMOVRdSP()

◆ EmulateMUL()

◆ EmulateMVNImm()

◆ EmulateMVNReg()

◆ EmulateNop()

bool EmulateInstructionARM::EmulateNop ( const uint32_t opcode,
const ARMEncoding encoding )
protected

Definition at line 2791 of file EmulateInstructionARM.cpp.

Referenced by GetThumbOpcodeForInstruction().

◆ EmulateORRImm()

◆ EmulateORRReg()

◆ EmulatePLDImmediate()

bool lldb_private::EmulateInstructionARM::EmulatePLDImmediate ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulatePLIImmediate()

bool lldb_private::EmulateInstructionARM::EmulatePLIImmediate ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulatePLIRegister()

bool lldb_private::EmulateInstructionARM::EmulatePLIRegister ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulatePOP()

◆ EmulatePUSH()

◆ EmulateRFE()

◆ EmulateRORImm()

bool EmulateInstructionARM::EmulateRORImm ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateRORReg()

bool EmulateInstructionARM::EmulateRORReg ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateRRX()

bool EmulateInstructionARM::EmulateRRX ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateRSBImm()

◆ EmulateRSBReg()

◆ EmulateRSCImm()

◆ EmulateRSCReg()

◆ EmulateSBCImm()

◆ EmulateSBCReg()

◆ EmulateShiftImm()

◆ EmulateShiftReg()

◆ EmulateSTM()

◆ EmulateSTMDA()

◆ EmulateSTMDB()

◆ EmulateSTMIB()

◆ EmulateSTRBImmARM()

◆ EmulateSTRBReg()

bool lldb_private::EmulateInstructionARM::EmulateSTRBReg ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRBT()

bool lldb_private::EmulateInstructionARM::EmulateSTRBT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRBThumb()

◆ EmulateSTRDImm()

◆ EmulateSTRDReg()

◆ EmulateSTREX()

◆ EmulateSTREXB()

bool lldb_private::EmulateInstructionARM::EmulateSTREXB ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTREXD()

bool lldb_private::EmulateInstructionARM::EmulateSTREXD ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTREXH()

bool lldb_private::EmulateInstructionARM::EmulateSTREXH ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRHImmARM()

bool lldb_private::EmulateInstructionARM::EmulateSTRHImmARM ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRHImmThumb()

bool lldb_private::EmulateInstructionARM::EmulateSTRHImmThumb ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRHRegister()

◆ EmulateSTRHT()

bool lldb_private::EmulateInstructionARM::EmulateSTRHT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRImmARM()

◆ EmulateSTRRegister()

◆ EmulateSTRRtSP()

◆ EmulateSTRT()

bool lldb_private::EmulateInstructionARM::EmulateSTRT ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSTRThumb()

◆ EmulateSUBImmARM()

◆ EmulateSUBImmThumb()

◆ EmulateSUBIPSPImm()

◆ EmulateSUBR7IPImm()

◆ EmulateSUBReg()

◆ EmulateSUBRegShift()

bool lldb_private::EmulateInstructionARM::EmulateSUBRegShift ( const uint32_t opcode,
const ARMEncoding encoding )
protected

◆ EmulateSUBSPcLrEtc()

◆ EmulateSUBSPImm()

◆ EmulateSUBSPReg()

◆ EmulateSVC()

◆ EmulateSXTB()

◆ EmulateSXTH()

◆ EmulateTB()

◆ EmulateTEQImm()

◆ EmulateTEQReg()

◆ EmulateTSTImm()

◆ EmulateTSTReg()

◆ EmulateUXTB()

◆ EmulateUXTH()

◆ EmulateVLD1Multiple()

◆ EmulateVLD1Single()

◆ EmulateVLD1SingleAll()

◆ EmulateVLDM()

◆ EmulateVLDR()

◆ EmulateVPOP()

◆ EmulateVPUSH()

◆ EmulateVST1Multiple()

◆ EmulateVST1Single()

◆ EmulateVSTM()

◆ EmulateVSTR()

◆ EvaluateInstruction()

◆ GetARMOpcodeForInstruction()

EmulateInstructionARM::ARMOpcode * EmulateInstructionARM::GetARMOpcodeForInstruction ( const uint32_t opcode,
uint32_t isa_mask )
staticprotected

Definition at line 12810 of file EmulateInstructionARM.cpp.

References AdvancedSIMD, ARMV5_ABOVE, ARMV5TE_ABOVE, ARMV6_ABOVE, ARMV6T2_ABOVE, ARMvAll, eEncodingA1, eEncodingA2, EmulateADCImm(), EmulateADCReg(), EmulateADDImmARM(), EmulateADDRdSPImm(), EmulateADDReg(), EmulateADDRegShift(), EmulateADR(), EmulateANDImm(), EmulateANDReg(), EmulateASRImm(), EmulateASRReg(), EmulateB(), EmulateBICImm(), EmulateBICReg(), EmulateBLXImmediate(), EmulateBLXRm(), EmulateBXJRm(), EmulateBXRm(), EmulateCMNImm(), EmulateCMNReg(), EmulateCMPImm(), EmulateCMPReg(), EmulateEORImm(), EmulateEORReg(), EmulateLDM(), EmulateLDMDA(), EmulateLDMDB(), EmulateLDMIB(), EmulateLDRBLiteral(), EmulateLDRBRegister(), EmulateLDRDImmediate(), EmulateLDRDRegister(), EmulateLDRHLiteral(), EmulateLDRHRegister(), EmulateLDRImmediateARM(), EmulateLDRRegister(), EmulateLDRSBImmediate(), EmulateLDRSBLiteral(), EmulateLDRSBRegister(), EmulateLDRSHImmediate(), EmulateLDRSHLiteral(), EmulateLDRSHRegister(), EmulateLSLImm(), EmulateLSLReg(), EmulateLSRImm(), EmulateLSRReg(), EmulateMOVRdImm(), EmulateMOVRdRm(), EmulateMOVRdSP(), EmulateMUL(), EmulateMVNImm(), EmulateMVNReg(), EmulateORRImm(), EmulateORRReg(), EmulatePOP(), EmulatePUSH(), EmulateRFE(), EmulateRORImm(), EmulateRORReg(), EmulateRRX(), EmulateRSBImm(), EmulateRSBReg(), EmulateRSCImm(), EmulateRSCReg(), EmulateSBCImm(), EmulateSBCReg(), EmulateSTM(), EmulateSTMDA(), EmulateSTMDB(), EmulateSTMIB(), EmulateSTRBImmARM(), EmulateSTRDImm(), EmulateSTRDReg(), EmulateSTREX(), EmulateSTRHRegister(), EmulateSTRImmARM(), EmulateSTRRegister(), EmulateSTRRtSP(), EmulateSUBImmARM(), EmulateSUBIPSPImm(), EmulateSUBR7IPImm(), EmulateSUBReg(), EmulateSUBSPcLrEtc(), EmulateSUBSPImm(), EmulateSUBSPReg(), EmulateSVC(), EmulateSXTB(), EmulateSXTH(), EmulateTEQImm(), EmulateTEQReg(), EmulateTSTImm(), EmulateTSTReg(), EmulateUXTB(), EmulateUXTH(), EmulateVLD1Multiple(), EmulateVLD1Single(), EmulateVLD1SingleAll(), EmulateVLDM(), EmulateVLDR(), EmulateVPOP(), EmulateVPUSH(), EmulateVST1Multiple(), EmulateVST1Single(), EmulateVSTM(), EmulateVSTR(), eSize32, No_VFP, VFPv2_ABOVE, and VFPv2v3.

Referenced by EvaluateInstruction().

◆ GetFramePointerDWARFRegisterNumber()

uint32_t EmulateInstructionARM::GetFramePointerDWARFRegisterNumber ( ) const
protected

◆ GetFramePointerRegisterNumber()

uint32_t EmulateInstructionARM::GetFramePointerRegisterNumber ( ) const
protected

◆ GetInstructionCondition()

◆ GetPluginDescriptionStatic()

llvm::StringRef EmulateInstructionARM::GetPluginDescriptionStatic ( )
static

Definition at line 717 of file EmulateInstructionARM.cpp.

Referenced by Initialize().

◆ GetPluginName()

llvm::StringRef lldb_private::EmulateInstructionARM::GetPluginName ( )
inlineoverridevirtual

Implements lldb_private::PluginInterface.

Definition at line 96 of file EmulateInstructionARM.h.

References GetPluginNameStatic().

◆ GetPluginNameStatic()

llvm::StringRef lldb_private::EmulateInstructionARM::GetPluginNameStatic ( )
inlinestatic

Definition at line 75 of file EmulateInstructionARM.h.

Referenced by GetPluginName(), and Initialize().

◆ GetRegisterInfo()

std::optional< RegisterInfo > EmulateInstructionARM::GetRegisterInfo ( lldb::RegisterKind reg_kind,
uint32_t reg_num )
overridevirtual

Implements lldb_private::EmulateInstruction.

Definition at line 787 of file EmulateInstructionARM.cpp.

References dwarf_cpsr, dwarf_lr, dwarf_pc, dwarf_r7, dwarf_sp, lldb::eRegisterKindDWARF, lldb::eRegisterKindGeneric, GetARMDWARFRegisterInfo(), LLDB_REGNUM_GENERIC_FLAGS, LLDB_REGNUM_GENERIC_FP, LLDB_REGNUM_GENERIC_PC, LLDB_REGNUM_GENERIC_RA, and LLDB_REGNUM_GENERIC_SP.

Referenced by EmulateADDImmARM(), EmulateADDImmThumb(), EmulateADDRdSPImm(), EmulateADDReg(), EmulateADDRegShift(), EmulateADDSPImm(), EmulateADDSPRm(), EmulateBLXRm(), EmulateBXJRm(), EmulateBXRm(), EmulateLDM(), EmulateLDMDA(), EmulateLDMDB(), EmulateLDMIB(), EmulateLDRBImmediate(), EmulateLDRBRegister(), EmulateLDRHImmediate(), EmulateLDRHLiteral(), EmulateLDRHRegister(), EmulateLDRImmediateARM(), EmulateLDRRegister(), EmulateLDRRtPCRelative(), EmulateLDRRtRnImm(), EmulateLDRSBImmediate(), EmulateLDRSBLiteral(), EmulateLDRSBRegister(), EmulateLDRSHImmediate(), EmulateLDRSHLiteral(), EmulateLDRSHRegister(), EmulateMOVRdRm(), EmulateMOVRdSP(), EmulateMUL(), EmulatePOP(), EmulatePUSH(), EmulateRFE(), EmulateSTM(), EmulateSTMDA(), EmulateSTMDB(), EmulateSTMIB(), EmulateSTRBImmARM(), EmulateSTRBThumb(), EmulateSTRDImm(), EmulateSTRDReg(), EmulateSTREX(), EmulateSTRHRegister(), EmulateSTRImmARM(), EmulateSTRRegister(), EmulateSTRRtSP(), EmulateSTRThumb(), EmulateSUBImmARM(), EmulateSUBIPSPImm(), EmulateSUBR7IPImm(), EmulateSUBReg(), EmulateSUBSPReg(), EmulateSXTB(), EmulateSXTH(), EmulateUXTB(), EmulateUXTH(), EmulateVLD1Multiple(), EmulateVLD1Single(), EmulateVLD1SingleAll(), EmulateVLDM(), EmulateVLDR(), EmulateVPOP(), EmulateVPUSH(), EmulateVST1Multiple(), EmulateVST1Single(), EmulateVSTM(), and EmulateVSTR().

◆ GetSingleStepBreakpointLocationsPredictorCreator()

BreakpointLocationsPredictorCreator lldb_private::EmulateInstructionARM::GetSingleStepBreakpointLocationsPredictorCreator ( )
inlineoverrideprotectedvirtual

Reimplemented from lldb_private::EmulateInstruction.

Definition at line 784 of file EmulateInstructionARM.h.

◆ GetThumbOpcodeForInstruction()

EmulateInstructionARM::ARMOpcode * EmulateInstructionARM::GetThumbOpcodeForInstruction ( const uint32_t opcode,
uint32_t isa_mask )
staticprotected

Definition at line 13182 of file EmulateInstructionARM.cpp.

References AdvancedSIMD, ARMV4T_ABOVE, ARMV5_ABOVE, ARMV5J_ABOVE, ARMV6_ABOVE, ARMV6T2_ABOVE, ARMV7_ABOVE, ARMvAll, eEncodingT1, eEncodingT2, eEncodingT3, eEncodingT4, EmulateADCImm(), EmulateADCReg(), EmulateADDImmThumb(), EmulateADDRdSPImm(), EmulateADDReg(), EmulateADDSPImm(), EmulateADDSPRm(), EmulateADR(), EmulateANDImm(), EmulateANDReg(), EmulateASRImm(), EmulateASRReg(), EmulateB(), EmulateBICImm(), EmulateBICReg(), EmulateBLXImmediate(), EmulateBLXRm(), EmulateBXJRm(), EmulateBXRm(), EmulateCB(), EmulateCMNImm(), EmulateCMNReg(), EmulateCMPImm(), EmulateCMPReg(), EmulateEORImm(), EmulateEORReg(), EmulateIT(), EmulateLDM(), EmulateLDMDB(), EmulateLDRBImmediate(), EmulateLDRBLiteral(), EmulateLDRBRegister(), EmulateLDRDImmediate(), EmulateLDRHImmediate(), EmulateLDRHLiteral(), EmulateLDRHRegister(), EmulateLDRRegister(), EmulateLDRRtPCRelative(), EmulateLDRRtRnImm(), EmulateLDRSBImmediate(), EmulateLDRSBLiteral(), EmulateLDRSBRegister(), EmulateLDRSHImmediate(), EmulateLDRSHLiteral(), EmulateLDRSHRegister(), EmulateLSLImm(), EmulateLSLReg(), EmulateLSRImm(), EmulateLSRReg(), EmulateMOVLowHigh(), EmulateMOVRdImm(), EmulateMOVRdRm(), EmulateMOVRdSP(), EmulateMUL(), EmulateMVNImm(), EmulateMVNReg(), EmulateNop(), EmulateORRImm(), EmulateORRReg(), EmulatePOP(), EmulatePUSH(), EmulateRFE(), EmulateRORImm(), EmulateRORReg(), EmulateRRX(), EmulateRSBImm(), EmulateRSBReg(), EmulateSBCImm(), EmulateSBCReg(), EmulateSTM(), EmulateSTMDB(), EmulateSTRBThumb(), EmulateSTRDImm(), EmulateSTREX(), EmulateSTRHRegister(), EmulateSTRRegister(), EmulateSTRThumb(), EmulateSUBImmThumb(), EmulateSUBReg(), EmulateSUBSPcLrEtc(), EmulateSUBSPImm(), EmulateSUBSPReg(), EmulateSVC(), EmulateSXTB(), EmulateSXTH(), EmulateTB(), EmulateTEQImm(), EmulateTEQReg(), EmulateTSTImm(), EmulateTSTReg(), EmulateUXTB(), EmulateUXTH(), EmulateVLD1Multiple(), EmulateVLD1Single(), EmulateVLD1SingleAll(), EmulateVLDM(), EmulateVLDR(), EmulateVPOP(), EmulateVPUSH(), EmulateVST1Multiple(), EmulateVST1Single(), EmulateVSTM(), EmulateVSTR(), eSize16, eSize32, No_VFP, VFPv2_ABOVE, and VFPv2v3.

Referenced by EvaluateInstruction().

◆ InITBlock()

◆ Initialize()

void EmulateInstructionARM::Initialize ( )
static

◆ LastInITBlock()

◆ LoadWritePC()

◆ MemARead()

uint64_t lldb_private::EmulateInstructionARM::MemARead ( EmulateInstruction::Context & context,
lldb::addr_t address,
uint32_t size,
uint64_t fail_value,
bool * success_ptr )
inline

◆ MemAWrite()

◆ MemURead()

◆ MemUWrite()

◆ ReadCoreReg()

uint32_t EmulateInstructionARM::ReadCoreReg ( uint32_t regnum,
bool * success )

Definition at line 14159 of file EmulateInstructionARM.cpp.

References CurrentInstrSet(), dwarf_r0, eModeARM, lldb::eRegisterKindDWARF, lldb::eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, LLDB_REGNUM_GENERIC_RA, LLDB_REGNUM_GENERIC_SP, LR_REG, PC_REG, lldb_private::EmulateInstruction::ReadRegisterUnsigned(), SP_REG, and UINT32_MAX.

Referenced by EmulateADCImm(), EmulateADCReg(), EmulateADDImmARM(), EmulateADDRdSPImm(), EmulateADDReg(), EmulateADDRegShift(), EmulateADDSPImm(), EmulateADDSPRm(), EmulateADR(), EmulateANDImm(), EmulateANDReg(), EmulateB(), EmulateBICImm(), EmulateBICReg(), EmulateBLXImmediate(), EmulateBLXRm(), EmulateBXJRm(), EmulateBXRm(), EmulateCB(), EmulateCMNImm(), EmulateCMNReg(), EmulateCMPImm(), EmulateCMPReg(), EmulateEORImm(), EmulateEORReg(), EmulateLDMDA(), EmulateLDRBLiteral(), EmulateLDRDImmediate(), EmulateLDRDRegister(), EmulateLDRHLiteral(), EmulateLDRImmediateARM(), EmulateLDRRtPCRelative(), EmulateLDRRtRnImm(), EmulateLDRSBImmediate(), EmulateLDRSBLiteral(), EmulateLDRSHLiteral(), EmulateMOVRdRm(), EmulateMOVRdSP(), EmulateMVNReg(), EmulateORRImm(), EmulateORRReg(), EmulatePOP(), EmulatePUSH(), EmulateRSBImm(), EmulateRSBReg(), EmulateRSCImm(), EmulateRSCReg(), EmulateSBCImm(), EmulateSBCReg(), EmulateShiftImm(), EmulateShiftReg(), EmulateSTM(), EmulateSTMDA(), EmulateSTMDB(), EmulateSTMIB(), EmulateSTRBImmARM(), EmulateSTRDImm(), EmulateSTRDReg(), EmulateSTREX(), EmulateSTRHRegister(), EmulateSTRImmARM(), EmulateSTRRegister(), EmulateSTRRtSP(), EmulateSTRThumb(), EmulateSUBImmARM(), EmulateSUBImmThumb(), EmulateSUBIPSPImm(), EmulateSUBR7IPImm(), EmulateSUBReg(), EmulateSUBSPcLrEtc(), EmulateSUBSPImm(), EmulateSUBSPReg(), EmulateSVC(), EmulateTB(), EmulateTEQImm(), EmulateTEQReg(), EmulateTSTImm(), EmulateTSTReg(), EmulateVLD1Multiple(), EmulateVLD1Single(), EmulateVLD1SingleAll(), EmulateVLDM(), EmulateVLDR(), EmulateVPOP(), EmulateVPUSH(), EmulateVST1Multiple(), EmulateVST1Single(), EmulateVSTM(), and EmulateVSTR().

◆ ReadInstruction()

◆ SelectInstrSet()

bool EmulateInstructionARM::SelectInstrSet ( Mode arm_or_thumb)

◆ SetArchitecture()

bool EmulateInstructionARM::SetArchitecture ( const ArchSpec & arch)
virtual

◆ SetInstruction()

◆ SetTargetTriple()

bool EmulateInstructionARM::SetTargetTriple ( const ArchSpec & arch)
overridevirtual

◆ SupportsEmulatingInstructionsOfType()

bool lldb_private::EmulateInstructionARM::SupportsEmulatingInstructionsOfType ( InstructionType inst_type)
inlineoverridevirtual

◆ SupportsEmulatingInstructionsOfTypeStatic()

bool lldb_private::EmulateInstructionARM::SupportsEmulatingInstructionsOfTypeStatic ( InstructionType inst_type)
inlinestatic

◆ Terminate()

void EmulateInstructionARM::Terminate ( )
static

◆ TestEmulation()

◆ UnalignedSupport()

◆ WriteBits32Unknown()

◆ WriteBits32UnknownToMemory()

◆ WriteCoreReg()

bool lldb_private::EmulateInstructionARM::WriteCoreReg ( Context & context,
const uint32_t result,
const uint32_t Rd )
inline

Definition at line 211 of file EmulateInstructionARM.h.

References WriteCoreRegOptionalFlags().

Referenced by EmulateADR().

◆ WriteCoreRegOptionalFlags()

◆ WriteFlags()

Member Data Documentation

◆ m_arm_isa

uint32_t lldb_private::EmulateInstructionARM::m_arm_isa
protected

◆ m_ignore_conditions

bool lldb_private::EmulateInstructionARM::m_ignore_conditions
protected

◆ m_it_session

ITSession lldb_private::EmulateInstructionARM::m_it_session
protected

◆ m_new_inst_cpsr

uint32_t lldb_private::EmulateInstructionARM::m_new_inst_cpsr
protected

◆ m_opcode_cpsr

◆ m_opcode_mode


The documentation for this class was generated from the following files: