MCPcopy Create free account
hub / github.com/beefytech/Beef / GetFrameBaseRegister

Method GetFrameBaseRegister

IDEHelper/DebugTarget.cpp:2183–2213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2181}
2182
2183int DebugTarget::GetFrameBaseRegister(DbgSubprogram* dwSubprogram)
2184{
2185 if (dwSubprogram->mFrameBaseLen == 0)
2186 return -1;
2187
2188 auto locData = dwSubprogram->mFrameBaseData;
2189 if (locData != NULL)
2190 {
2191 uint8 opCode = GET_FROM(locData, uint8);
2192 if ((opCode >= DW_OP_reg0) && (opCode <= DW_OP_reg8))
2193 {
2194 return opCode - DW_OP_reg0;
2195 }
2196 }
2197
2198#ifdef BF_DBG_32
2199 if (dwSubprogram->mLocalBaseReg == DbgSubprogram::LocalBaseRegKind_VFRAME)
2200 return X86Reg_EBP;
2201 else if (dwSubprogram->mLocalBaseReg == DbgSubprogram::LocalBaseRegKind_EBX)
2202 return X86Reg_EBX;
2203 return X86Reg_EBP;
2204#else
2205 if (dwSubprogram->mLocalBaseReg == DbgSubprogram::LocalBaseRegKind_RSP)
2206 return X64Reg_RSP;
2207 else if (dwSubprogram->mLocalBaseReg == DbgSubprogram::LocalBaseRegKind_R13)
2208 return X64Reg_R13;
2209 return X64Reg_RBP;
2210#endif
2211
2212 return -1;
2213}
2214
2215bool DebugTarget::GetVariableIndexRegisterAndOffset(DbgVariable* dwVariable, int* outRegister, int* outOffset)
2216{

Callers 1

DisassembleAtMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected