LLDB mainline
Classes | Macros | Typedefs | Functions
ABIX86.cpp File Reference
#include "ABIMacOSX_i386.h"
#include "ABISysV_i386.h"
#include "ABISysV_x86_64.h"
#include "ABIWindows_x86_64.h"
#include "ABIX86.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Target/Process.h"
#include <optional>

Go to the source code of this file.

Classes

struct  RegData
 

Macros

#define GPRh(l)
 
#define GPR(r16)
 
#define GPR64(n)
 
#define STMM(n)    { BaseRegToRegsMap::value_type("st" #n, {{MM, "mm" #n, std::nullopt}}) }
 
#define YMM(n)
 

Typedefs

typedef llvm::SmallDenseMap< llvm::StringRef, llvm::SmallVector< RegData, 4 >, 64 > BaseRegToRegsMap
 

Functions

static void addPartialRegisters (std::vector< DynamicRegisterInfo::Register > &regs, llvm::ArrayRef< RegData * > subregs, uint32_t base_size, lldb::Encoding encoding, lldb::Format format, uint32_t subreg_size, uint32_t subreg_offset=0)
 
static void addCombinedRegisters (std::vector< DynamicRegisterInfo::Register > &regs, llvm::ArrayRef< RegData * > subregs1, llvm::ArrayRef< RegData * > subregs2, uint32_t base_size, lldb::Encoding encoding, lldb::Format format)
 
BaseRegToRegsMap makeBaseRegMap (bool is64bit)
 

Macro Definition Documentation

◆ GPR

#define GPR (   r16)
Value:
{ \
is64bit ? BaseRegToRegsMap::value_type("r" r16, \
{{GPR32, "e" r16, std::nullopt}, \
{GPR16, r16, std::nullopt}, \
{GPR8, r16 "l", std::nullopt}}) \
: BaseRegToRegsMap::value_type( \
"e" r16, \
{{GPR16, r16, std::nullopt}, {GPR8, r16 "l", std::nullopt}}) \
}
struct _GPR32 GPR32

Definition at line 145 of file ABIX86.cpp.

◆ GPR64

#define GPR64 (   n)
Value:
{ \
BaseRegToRegsMap::value_type("r" #n, {{GPR32, "r" #n "d", std::nullopt}, \
{GPR16, "r" #n "w", std::nullopt}, \
{GPR8, "r" #n "l", std::nullopt}}) \
}

Definition at line 156 of file ABIX86.cpp.

◆ GPRh

#define GPRh (   l)
Value:
{ \
is64bit ? BaseRegToRegsMap::value_type("r" l "x", \
{{GPR32, "e" l "x", std::nullopt}, \
{GPR16, l "x", std::nullopt}, \
{GPR8h, l "h", std::nullopt}, \
{GPR8, l "l", std::nullopt}}) \
: BaseRegToRegsMap::value_type("e" l "x", \
{{GPR16, l "x", std::nullopt}, \
{GPR8h, l "h", std::nullopt}, \
{GPR8, l "l", std::nullopt}}) \
}

Definition at line 132 of file ABIX86.cpp.

◆ STMM

#define STMM (   n)     { BaseRegToRegsMap::value_type("st" #n, {{MM, "mm" #n, std::nullopt}}) }

Definition at line 163 of file ABIX86.cpp.

◆ YMM

#define YMM (   n)
Value:
{BaseRegToRegsMap::value_type("ymm" #n "h", \
{{YMM_YMMh, "ymm" #n, std::nullopt}})}, \
{ \
BaseRegToRegsMap::value_type("xmm" #n, \
{{YMM_XMM, "ymm" #n, std::nullopt}}) \
}

Definition at line 166 of file ABIX86.cpp.

Typedef Documentation

◆ BaseRegToRegsMap

typedef llvm::SmallDenseMap<llvm::StringRef, llvm::SmallVector<RegData, 4>, 64> BaseRegToRegsMap

Definition at line 130 of file ABIX86.cpp.

Function Documentation

◆ addCombinedRegisters()

static void addCombinedRegisters ( std::vector< DynamicRegisterInfo::Register > &  regs,
llvm::ArrayRef< RegData * >  subregs1,
llvm::ArrayRef< RegData * >  subregs2,
uint32_t  base_size,
lldb::Encoding  encoding,
lldb::Format  format 
)
static

◆ addPartialRegisters()

static void addPartialRegisters ( std::vector< DynamicRegisterInfo::Register > &  regs,
llvm::ArrayRef< RegData * >  subregs,
uint32_t  base_size,
lldb::Encoding  encoding,
lldb::Format  format,
uint32_t  subreg_size,
uint32_t  subreg_offset = 0 
)
static

◆ makeBaseRegMap()

BaseRegToRegsMap makeBaseRegMap ( bool  is64bit)

Definition at line 174 of file ABIX86.cpp.

References GPR, GPR64, GPRh, STMM, and YMM.

Referenced by ABIX86::AugmentRegisterInfo().