mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-22 05:13:22 +08:00
[~] pyDia: regs, print
git-svn-id: https://pykd.svn.codeplex.com/svn@69959 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
972236f451
commit
2d40f6c38a
@ -165,12 +165,21 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
"Retrieves the unique symbol identifier")
|
"Retrieves the unique symbol identifier")
|
||||||
.def( "udtKind", &pyDia::Symbol::getUdtKind,
|
.def( "udtKind", &pyDia::Symbol::getUdtKind,
|
||||||
"Retrieves the variety of a user-defined type")
|
"Retrieves the variety of a user-defined type")
|
||||||
|
.def("registerId", &pyDia::Symbol::getRegisterId,
|
||||||
|
"Retrieves the register designator of the location:\n"
|
||||||
|
"CV_REG_XXX (for IMAGE_FILE_MACHINE_I386) or CV_AMD64_XXX (for IMAGE_FILE_MACHINE_AMD64)")
|
||||||
.def( "__str__", &pyDia::Symbol::print)
|
.def( "__str__", &pyDia::Symbol::print)
|
||||||
.def("__getitem__", &pyDia::Symbol::getChildByName)
|
.def("__getitem__", &pyDia::Symbol::getChildByName)
|
||||||
.def("__len__", &pyDia::Symbol::getChildCount )
|
.def("__len__", &pyDia::Symbol::getChildCount )
|
||||||
.def("__getitem__", &pyDia::Symbol::getChildByIndex);
|
.def("__getitem__", &pyDia::Symbol::getChildByIndex);
|
||||||
|
|
||||||
python::class_<pyDia::GlobalScope, python::bases<pyDia::Symbol> >("DiaScope", "class wrapper for MS DIA Symbol" );
|
python::class_<pyDia::GlobalScope, python::bases<pyDia::Symbol> >("DiaScope", "class wrapper for MS DIA Symbol" )
|
||||||
|
.def("machineType", &pyDia::GlobalScope::getMachineType, "Retrieves the type of the target CPU: IMAGE_FILE_MACHINE_XXX");
|
||||||
|
|
||||||
|
// CPU type:
|
||||||
|
DEF_PY_CONST_ULONG(IMAGE_FILE_MACHINE_I386);
|
||||||
|
DEF_PY_CONST_ULONG(IMAGE_FILE_MACHINE_IA64);
|
||||||
|
DEF_PY_CONST_ULONG(IMAGE_FILE_MACHINE_AMD64);
|
||||||
|
|
||||||
// type of symbol
|
// type of symbol
|
||||||
DEF_PY_CONST_ULONG(SymTagNull);
|
DEF_PY_CONST_ULONG(SymTagNull);
|
||||||
@ -261,6 +270,13 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
python::scope().attr("diaUdtKind") =
|
python::scope().attr("diaUdtKind") =
|
||||||
genDict(pyDia::Symbol::udtKindName, pyDia::Symbol::cntUdtKindName);
|
genDict(pyDia::Symbol::udtKindName, pyDia::Symbol::cntUdtKindName);
|
||||||
|
|
||||||
|
// i386/amd64 cpu registers
|
||||||
|
#include "diaregs.h"
|
||||||
|
python::scope().attr("diaI386Regs") =
|
||||||
|
genDict(pyDia::Symbol::i386RegName, pyDia::Symbol::cntI386RegName);
|
||||||
|
python::scope().attr("diaAmd64Regs") =
|
||||||
|
genDict(pyDia::Symbol::amd64RegName, pyDia::Symbol::cntAmd64RegName);
|
||||||
|
|
||||||
// exception:
|
// exception:
|
||||||
|
|
||||||
// base exception
|
// base exception
|
||||||
|
476
pykd/diadata.cpp
Normal file
476
pykd/diadata.cpp
Normal file
@ -0,0 +1,476 @@
|
|||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
#include "diawrapper.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
namespace pyDia {
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define _DEF_SYM_TAG_VAL(x) Symbol::ValueNameEntry(SymTag##x, #x)
|
||||||
|
const Symbol::ValueNameEntry Symbol::symTagName[SymTagMax] = {
|
||||||
|
_DEF_SYM_TAG_VAL(Null),
|
||||||
|
_DEF_SYM_TAG_VAL(Exe),
|
||||||
|
_DEF_SYM_TAG_VAL(Compiland),
|
||||||
|
_DEF_SYM_TAG_VAL(CompilandDetails),
|
||||||
|
_DEF_SYM_TAG_VAL(CompilandEnv),
|
||||||
|
_DEF_SYM_TAG_VAL(Function),
|
||||||
|
_DEF_SYM_TAG_VAL(Block),
|
||||||
|
_DEF_SYM_TAG_VAL(Data),
|
||||||
|
_DEF_SYM_TAG_VAL(Annotation),
|
||||||
|
_DEF_SYM_TAG_VAL(Label),
|
||||||
|
_DEF_SYM_TAG_VAL(PublicSymbol),
|
||||||
|
_DEF_SYM_TAG_VAL(UDT),
|
||||||
|
_DEF_SYM_TAG_VAL(Enum),
|
||||||
|
_DEF_SYM_TAG_VAL(FunctionType),
|
||||||
|
_DEF_SYM_TAG_VAL(PointerType),
|
||||||
|
_DEF_SYM_TAG_VAL(ArrayType),
|
||||||
|
_DEF_SYM_TAG_VAL(BaseType),
|
||||||
|
_DEF_SYM_TAG_VAL(Typedef),
|
||||||
|
_DEF_SYM_TAG_VAL(BaseClass),
|
||||||
|
_DEF_SYM_TAG_VAL(Friend),
|
||||||
|
_DEF_SYM_TAG_VAL(FunctionArgType),
|
||||||
|
_DEF_SYM_TAG_VAL(FuncDebugStart),
|
||||||
|
_DEF_SYM_TAG_VAL(FuncDebugEnd),
|
||||||
|
_DEF_SYM_TAG_VAL(UsingNamespace),
|
||||||
|
_DEF_SYM_TAG_VAL(VTableShape),
|
||||||
|
_DEF_SYM_TAG_VAL(VTable),
|
||||||
|
_DEF_SYM_TAG_VAL(Custom),
|
||||||
|
_DEF_SYM_TAG_VAL(Thunk),
|
||||||
|
_DEF_SYM_TAG_VAL(CustomType),
|
||||||
|
_DEF_SYM_TAG_VAL(ManagedType),
|
||||||
|
_DEF_SYM_TAG_VAL(Dimension)
|
||||||
|
};
|
||||||
|
#undef _DEF_SYM_TAG_VAL
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define _DEF_LOC_TYPE(x) Symbol::ValueNameEntry(LocIs##x, #x)
|
||||||
|
const Symbol::ValueNameEntry Symbol::locTypeName[LocTypeMax] = {
|
||||||
|
_DEF_LOC_TYPE(Null),
|
||||||
|
_DEF_LOC_TYPE(Static),
|
||||||
|
_DEF_LOC_TYPE(TLS),
|
||||||
|
_DEF_LOC_TYPE(RegRel),
|
||||||
|
_DEF_LOC_TYPE(ThisRel),
|
||||||
|
_DEF_LOC_TYPE(Enregistered),
|
||||||
|
_DEF_LOC_TYPE(BitField),
|
||||||
|
_DEF_LOC_TYPE(Slot),
|
||||||
|
_DEF_LOC_TYPE(IlRel),
|
||||||
|
Symbol::ValueNameEntry(LocInMetaData, "InMetaData"),
|
||||||
|
_DEF_LOC_TYPE(Constant)
|
||||||
|
};
|
||||||
|
#undef _DEF_LOC_TYPE
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define _DEF_BASIC_TYPE(x) Symbol::ValueNameEntry(bt##x, #x)
|
||||||
|
const Symbol::ValueNameEntry Symbol::basicTypeName[] = {
|
||||||
|
_DEF_BASIC_TYPE(NoType),
|
||||||
|
_DEF_BASIC_TYPE(Void),
|
||||||
|
_DEF_BASIC_TYPE(Char),
|
||||||
|
_DEF_BASIC_TYPE(WChar),
|
||||||
|
_DEF_BASIC_TYPE(Int),
|
||||||
|
_DEF_BASIC_TYPE(UInt),
|
||||||
|
_DEF_BASIC_TYPE(Float),
|
||||||
|
_DEF_BASIC_TYPE(BCD),
|
||||||
|
_DEF_BASIC_TYPE(Bool),
|
||||||
|
_DEF_BASIC_TYPE(Long),
|
||||||
|
_DEF_BASIC_TYPE(ULong),
|
||||||
|
_DEF_BASIC_TYPE(Currency),
|
||||||
|
_DEF_BASIC_TYPE(Date),
|
||||||
|
_DEF_BASIC_TYPE(Variant),
|
||||||
|
_DEF_BASIC_TYPE(Complex),
|
||||||
|
_DEF_BASIC_TYPE(Bit),
|
||||||
|
_DEF_BASIC_TYPE(BSTR),
|
||||||
|
_DEF_BASIC_TYPE(Hresult)
|
||||||
|
};
|
||||||
|
#undef _DEF_BASIC_TYPE
|
||||||
|
|
||||||
|
const size_t Symbol::cntBasicTypeName = _countof(Symbol::basicTypeName);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define _DEF_UDT_KIND(x) Symbol::ValueNameEntry(Udt##x, #x)
|
||||||
|
const Symbol::ValueNameEntry Symbol::udtKindName[] = {
|
||||||
|
_DEF_UDT_KIND(Struct),
|
||||||
|
_DEF_UDT_KIND(Class),
|
||||||
|
_DEF_UDT_KIND(Union)
|
||||||
|
};
|
||||||
|
#undef _DEF_UDT_KIND
|
||||||
|
|
||||||
|
const size_t Symbol::cntUdtKindName = _countof(udtKindName);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define _DEF_I386_REG(x) Symbol::ValueNameEntry(CV_REG_##x, #x)
|
||||||
|
const Symbol::ValueNameEntry Symbol::i386RegName[] = {
|
||||||
|
_DEF_I386_REG(AL),
|
||||||
|
_DEF_I386_REG(CL),
|
||||||
|
_DEF_I386_REG(DL),
|
||||||
|
_DEF_I386_REG(BL),
|
||||||
|
_DEF_I386_REG(AH),
|
||||||
|
_DEF_I386_REG(CH),
|
||||||
|
_DEF_I386_REG(DH),
|
||||||
|
_DEF_I386_REG(BH),
|
||||||
|
_DEF_I386_REG(AX),
|
||||||
|
_DEF_I386_REG(CX),
|
||||||
|
_DEF_I386_REG(DX),
|
||||||
|
_DEF_I386_REG(BX),
|
||||||
|
_DEF_I386_REG(SP),
|
||||||
|
_DEF_I386_REG(BP),
|
||||||
|
_DEF_I386_REG(SI),
|
||||||
|
_DEF_I386_REG(DI),
|
||||||
|
_DEF_I386_REG(EAX),
|
||||||
|
_DEF_I386_REG(ECX),
|
||||||
|
_DEF_I386_REG(EDX),
|
||||||
|
_DEF_I386_REG(EBX),
|
||||||
|
_DEF_I386_REG(ESP),
|
||||||
|
_DEF_I386_REG(EBP),
|
||||||
|
_DEF_I386_REG(ESI),
|
||||||
|
_DEF_I386_REG(EDI),
|
||||||
|
_DEF_I386_REG(ES),
|
||||||
|
_DEF_I386_REG(CS),
|
||||||
|
_DEF_I386_REG(SS),
|
||||||
|
_DEF_I386_REG(DS),
|
||||||
|
_DEF_I386_REG(FS),
|
||||||
|
_DEF_I386_REG(GS),
|
||||||
|
_DEF_I386_REG(IP),
|
||||||
|
_DEF_I386_REG(FLAGS ),
|
||||||
|
_DEF_I386_REG(EIP),
|
||||||
|
_DEF_I386_REG(EFLAGS),
|
||||||
|
_DEF_I386_REG(TEMP),
|
||||||
|
_DEF_I386_REG(TEMPH),
|
||||||
|
_DEF_I386_REG(QUOTE),
|
||||||
|
_DEF_I386_REG(PCDR3),
|
||||||
|
_DEF_I386_REG(PCDR4),
|
||||||
|
_DEF_I386_REG(PCDR5),
|
||||||
|
_DEF_I386_REG(PCDR6),
|
||||||
|
_DEF_I386_REG(PCDR7),
|
||||||
|
_DEF_I386_REG(CR0),
|
||||||
|
_DEF_I386_REG(CR1),
|
||||||
|
_DEF_I386_REG(CR2),
|
||||||
|
_DEF_I386_REG(CR3),
|
||||||
|
_DEF_I386_REG(CR4),
|
||||||
|
_DEF_I386_REG(DR0),
|
||||||
|
_DEF_I386_REG(DR1),
|
||||||
|
_DEF_I386_REG(DR2),
|
||||||
|
_DEF_I386_REG(DR3),
|
||||||
|
_DEF_I386_REG(DR4),
|
||||||
|
_DEF_I386_REG(DR5),
|
||||||
|
_DEF_I386_REG(DR6),
|
||||||
|
_DEF_I386_REG(DR7),
|
||||||
|
_DEF_I386_REG(GDTR),
|
||||||
|
_DEF_I386_REG(GDTL),
|
||||||
|
_DEF_I386_REG(IDTR),
|
||||||
|
_DEF_I386_REG(IDTL),
|
||||||
|
_DEF_I386_REG(LDTR),
|
||||||
|
_DEF_I386_REG(TR)
|
||||||
|
};
|
||||||
|
#undef _DEF_I386_REG
|
||||||
|
|
||||||
|
const size_t Symbol::cntI386RegName = _countof(i386RegName);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define _DEF_AMD64_REG(x) Symbol::ValueNameEntry(CV_AMD64_##x, #x)
|
||||||
|
const Symbol::ValueNameEntry Symbol::amd64RegName[] = {
|
||||||
|
_DEF_AMD64_REG(AL),
|
||||||
|
_DEF_AMD64_REG(CL),
|
||||||
|
_DEF_AMD64_REG(DL),
|
||||||
|
_DEF_AMD64_REG(BL),
|
||||||
|
_DEF_AMD64_REG(AH),
|
||||||
|
_DEF_AMD64_REG(CH),
|
||||||
|
_DEF_AMD64_REG(DH),
|
||||||
|
_DEF_AMD64_REG(BH),
|
||||||
|
_DEF_AMD64_REG(AX),
|
||||||
|
_DEF_AMD64_REG(CX),
|
||||||
|
_DEF_AMD64_REG(DX),
|
||||||
|
_DEF_AMD64_REG(BX),
|
||||||
|
_DEF_AMD64_REG(SP),
|
||||||
|
_DEF_AMD64_REG(BP),
|
||||||
|
_DEF_AMD64_REG(SI),
|
||||||
|
_DEF_AMD64_REG(DI),
|
||||||
|
_DEF_AMD64_REG(EAX),
|
||||||
|
_DEF_AMD64_REG(ECX),
|
||||||
|
_DEF_AMD64_REG(EDX),
|
||||||
|
_DEF_AMD64_REG(EBX),
|
||||||
|
_DEF_AMD64_REG(ESP),
|
||||||
|
_DEF_AMD64_REG(EBP),
|
||||||
|
_DEF_AMD64_REG(ESI),
|
||||||
|
_DEF_AMD64_REG(EDI),
|
||||||
|
_DEF_AMD64_REG(ES),
|
||||||
|
_DEF_AMD64_REG(CS),
|
||||||
|
_DEF_AMD64_REG(SS),
|
||||||
|
_DEF_AMD64_REG(DS),
|
||||||
|
_DEF_AMD64_REG(FS),
|
||||||
|
_DEF_AMD64_REG(GS),
|
||||||
|
_DEF_AMD64_REG(FLAGS),
|
||||||
|
_DEF_AMD64_REG(RIP),
|
||||||
|
_DEF_AMD64_REG(EFLAGS),
|
||||||
|
_DEF_AMD64_REG(CR0),
|
||||||
|
_DEF_AMD64_REG(CR1),
|
||||||
|
_DEF_AMD64_REG(CR2),
|
||||||
|
_DEF_AMD64_REG(CR3),
|
||||||
|
_DEF_AMD64_REG(CR4),
|
||||||
|
_DEF_AMD64_REG(CR8),
|
||||||
|
_DEF_AMD64_REG(DR0),
|
||||||
|
_DEF_AMD64_REG(DR1),
|
||||||
|
_DEF_AMD64_REG(DR2),
|
||||||
|
_DEF_AMD64_REG(DR3),
|
||||||
|
_DEF_AMD64_REG(DR4),
|
||||||
|
_DEF_AMD64_REG(DR5),
|
||||||
|
_DEF_AMD64_REG(DR6),
|
||||||
|
_DEF_AMD64_REG(DR7),
|
||||||
|
_DEF_AMD64_REG(DR8),
|
||||||
|
_DEF_AMD64_REG(DR9),
|
||||||
|
_DEF_AMD64_REG(DR10),
|
||||||
|
_DEF_AMD64_REG(DR11),
|
||||||
|
_DEF_AMD64_REG(DR12),
|
||||||
|
_DEF_AMD64_REG(DR13),
|
||||||
|
_DEF_AMD64_REG(DR14),
|
||||||
|
_DEF_AMD64_REG(DR15),
|
||||||
|
_DEF_AMD64_REG(GDTR),
|
||||||
|
_DEF_AMD64_REG(GDTL),
|
||||||
|
_DEF_AMD64_REG(IDTR),
|
||||||
|
_DEF_AMD64_REG(IDTL),
|
||||||
|
_DEF_AMD64_REG(LDTR),
|
||||||
|
_DEF_AMD64_REG(TR),
|
||||||
|
_DEF_AMD64_REG(ST0),
|
||||||
|
_DEF_AMD64_REG(ST1),
|
||||||
|
_DEF_AMD64_REG(ST2),
|
||||||
|
_DEF_AMD64_REG(ST3),
|
||||||
|
_DEF_AMD64_REG(ST4),
|
||||||
|
_DEF_AMD64_REG(ST5),
|
||||||
|
_DEF_AMD64_REG(ST6),
|
||||||
|
_DEF_AMD64_REG(ST7),
|
||||||
|
_DEF_AMD64_REG(CTRL),
|
||||||
|
_DEF_AMD64_REG(STAT),
|
||||||
|
_DEF_AMD64_REG(TAG),
|
||||||
|
_DEF_AMD64_REG(FPIP),
|
||||||
|
_DEF_AMD64_REG(FPCS),
|
||||||
|
_DEF_AMD64_REG(FPDO),
|
||||||
|
_DEF_AMD64_REG(FPDS),
|
||||||
|
_DEF_AMD64_REG(ISEM),
|
||||||
|
_DEF_AMD64_REG(FPEIP),
|
||||||
|
_DEF_AMD64_REG(FPEDO),
|
||||||
|
_DEF_AMD64_REG(MM0),
|
||||||
|
_DEF_AMD64_REG(MM1),
|
||||||
|
_DEF_AMD64_REG(MM2),
|
||||||
|
_DEF_AMD64_REG(MM3),
|
||||||
|
_DEF_AMD64_REG(MM4),
|
||||||
|
_DEF_AMD64_REG(MM5),
|
||||||
|
_DEF_AMD64_REG(MM6),
|
||||||
|
_DEF_AMD64_REG(MM7),
|
||||||
|
_DEF_AMD64_REG(XMM0),
|
||||||
|
_DEF_AMD64_REG(XMM1),
|
||||||
|
_DEF_AMD64_REG(XMM2),
|
||||||
|
_DEF_AMD64_REG(XMM3),
|
||||||
|
_DEF_AMD64_REG(XMM4),
|
||||||
|
_DEF_AMD64_REG(XMM5),
|
||||||
|
_DEF_AMD64_REG(XMM6),
|
||||||
|
_DEF_AMD64_REG(XMM7),
|
||||||
|
_DEF_AMD64_REG(XMM0_0),
|
||||||
|
_DEF_AMD64_REG(XMM0_1),
|
||||||
|
_DEF_AMD64_REG(XMM0_2),
|
||||||
|
_DEF_AMD64_REG(XMM0_3),
|
||||||
|
_DEF_AMD64_REG(XMM1_0),
|
||||||
|
_DEF_AMD64_REG(XMM1_1),
|
||||||
|
_DEF_AMD64_REG(XMM1_2),
|
||||||
|
_DEF_AMD64_REG(XMM1_3),
|
||||||
|
_DEF_AMD64_REG(XMM2_0),
|
||||||
|
_DEF_AMD64_REG(XMM2_1),
|
||||||
|
_DEF_AMD64_REG(XMM2_2),
|
||||||
|
_DEF_AMD64_REG(XMM2_3),
|
||||||
|
_DEF_AMD64_REG(XMM3_0),
|
||||||
|
_DEF_AMD64_REG(XMM3_1),
|
||||||
|
_DEF_AMD64_REG(XMM3_2),
|
||||||
|
_DEF_AMD64_REG(XMM3_3),
|
||||||
|
_DEF_AMD64_REG(XMM4_0),
|
||||||
|
_DEF_AMD64_REG(XMM4_1),
|
||||||
|
_DEF_AMD64_REG(XMM4_2),
|
||||||
|
_DEF_AMD64_REG(XMM4_3),
|
||||||
|
_DEF_AMD64_REG(XMM5_0),
|
||||||
|
_DEF_AMD64_REG(XMM5_1),
|
||||||
|
_DEF_AMD64_REG(XMM5_2),
|
||||||
|
_DEF_AMD64_REG(XMM5_3),
|
||||||
|
_DEF_AMD64_REG(XMM6_0),
|
||||||
|
_DEF_AMD64_REG(XMM6_1),
|
||||||
|
_DEF_AMD64_REG(XMM6_2),
|
||||||
|
_DEF_AMD64_REG(XMM6_3),
|
||||||
|
_DEF_AMD64_REG(XMM7_0),
|
||||||
|
_DEF_AMD64_REG(XMM7_1),
|
||||||
|
_DEF_AMD64_REG(XMM7_2),
|
||||||
|
_DEF_AMD64_REG(XMM7_3),
|
||||||
|
_DEF_AMD64_REG(XMM0L),
|
||||||
|
_DEF_AMD64_REG(XMM1L),
|
||||||
|
_DEF_AMD64_REG(XMM2L),
|
||||||
|
_DEF_AMD64_REG(XMM3L),
|
||||||
|
_DEF_AMD64_REG(XMM4L),
|
||||||
|
_DEF_AMD64_REG(XMM5L),
|
||||||
|
_DEF_AMD64_REG(XMM6L),
|
||||||
|
_DEF_AMD64_REG(XMM7L),
|
||||||
|
_DEF_AMD64_REG(XMM0H),
|
||||||
|
_DEF_AMD64_REG(XMM1H),
|
||||||
|
_DEF_AMD64_REG(XMM2H),
|
||||||
|
_DEF_AMD64_REG(XMM3H),
|
||||||
|
_DEF_AMD64_REG(XMM4H),
|
||||||
|
_DEF_AMD64_REG(XMM5H),
|
||||||
|
_DEF_AMD64_REG(XMM6H),
|
||||||
|
_DEF_AMD64_REG(XMM7H),
|
||||||
|
_DEF_AMD64_REG(MXCSR),
|
||||||
|
_DEF_AMD64_REG(EMM0L),
|
||||||
|
_DEF_AMD64_REG(EMM1L),
|
||||||
|
_DEF_AMD64_REG(EMM2L),
|
||||||
|
_DEF_AMD64_REG(EMM3L),
|
||||||
|
_DEF_AMD64_REG(EMM4L),
|
||||||
|
_DEF_AMD64_REG(EMM5L),
|
||||||
|
_DEF_AMD64_REG(EMM6L),
|
||||||
|
_DEF_AMD64_REG(EMM7L),
|
||||||
|
_DEF_AMD64_REG(EMM0H),
|
||||||
|
_DEF_AMD64_REG(EMM1H),
|
||||||
|
_DEF_AMD64_REG(EMM2H),
|
||||||
|
_DEF_AMD64_REG(EMM3H),
|
||||||
|
_DEF_AMD64_REG(EMM4H),
|
||||||
|
_DEF_AMD64_REG(EMM5H),
|
||||||
|
_DEF_AMD64_REG(EMM6H),
|
||||||
|
_DEF_AMD64_REG(EMM7H),
|
||||||
|
_DEF_AMD64_REG(MM00),
|
||||||
|
_DEF_AMD64_REG(MM01),
|
||||||
|
_DEF_AMD64_REG(MM10),
|
||||||
|
_DEF_AMD64_REG(MM11),
|
||||||
|
_DEF_AMD64_REG(MM20),
|
||||||
|
_DEF_AMD64_REG(MM21),
|
||||||
|
_DEF_AMD64_REG(MM30),
|
||||||
|
_DEF_AMD64_REG(MM31),
|
||||||
|
_DEF_AMD64_REG(MM40),
|
||||||
|
_DEF_AMD64_REG(MM41),
|
||||||
|
_DEF_AMD64_REG(MM50),
|
||||||
|
_DEF_AMD64_REG(MM51),
|
||||||
|
_DEF_AMD64_REG(MM60),
|
||||||
|
_DEF_AMD64_REG(MM61),
|
||||||
|
_DEF_AMD64_REG(MM70),
|
||||||
|
_DEF_AMD64_REG(MM71),
|
||||||
|
_DEF_AMD64_REG(XMM8),
|
||||||
|
_DEF_AMD64_REG(XMM9),
|
||||||
|
_DEF_AMD64_REG(XMM10),
|
||||||
|
_DEF_AMD64_REG(XMM11),
|
||||||
|
_DEF_AMD64_REG(XMM12),
|
||||||
|
_DEF_AMD64_REG(XMM13),
|
||||||
|
_DEF_AMD64_REG(XMM14),
|
||||||
|
_DEF_AMD64_REG(XMM15),
|
||||||
|
_DEF_AMD64_REG(XMM8_0),
|
||||||
|
_DEF_AMD64_REG(XMM8_1),
|
||||||
|
_DEF_AMD64_REG(XMM8_2),
|
||||||
|
_DEF_AMD64_REG(XMM8_3),
|
||||||
|
_DEF_AMD64_REG(XMM9_0),
|
||||||
|
_DEF_AMD64_REG(XMM9_1),
|
||||||
|
_DEF_AMD64_REG(XMM9_2),
|
||||||
|
_DEF_AMD64_REG(XMM9_3),
|
||||||
|
_DEF_AMD64_REG(XMM10_0),
|
||||||
|
_DEF_AMD64_REG(XMM10_1),
|
||||||
|
_DEF_AMD64_REG(XMM10_2),
|
||||||
|
_DEF_AMD64_REG(XMM10_3),
|
||||||
|
_DEF_AMD64_REG(XMM11_0),
|
||||||
|
_DEF_AMD64_REG(XMM11_1),
|
||||||
|
_DEF_AMD64_REG(XMM11_2),
|
||||||
|
_DEF_AMD64_REG(XMM11_3),
|
||||||
|
_DEF_AMD64_REG(XMM12_0),
|
||||||
|
_DEF_AMD64_REG(XMM12_1),
|
||||||
|
_DEF_AMD64_REG(XMM12_2),
|
||||||
|
_DEF_AMD64_REG(XMM12_3),
|
||||||
|
_DEF_AMD64_REG(XMM13_0),
|
||||||
|
_DEF_AMD64_REG(XMM13_1),
|
||||||
|
_DEF_AMD64_REG(XMM13_2),
|
||||||
|
_DEF_AMD64_REG(XMM13_3),
|
||||||
|
_DEF_AMD64_REG(XMM14_0),
|
||||||
|
_DEF_AMD64_REG(XMM14_1),
|
||||||
|
_DEF_AMD64_REG(XMM14_2),
|
||||||
|
_DEF_AMD64_REG(XMM14_3),
|
||||||
|
_DEF_AMD64_REG(XMM15_0),
|
||||||
|
_DEF_AMD64_REG(XMM15_1),
|
||||||
|
_DEF_AMD64_REG(XMM15_2),
|
||||||
|
_DEF_AMD64_REG(XMM15_3),
|
||||||
|
_DEF_AMD64_REG(XMM8L),
|
||||||
|
_DEF_AMD64_REG(XMM9L),
|
||||||
|
_DEF_AMD64_REG(XMM10L),
|
||||||
|
_DEF_AMD64_REG(XMM11L),
|
||||||
|
_DEF_AMD64_REG(XMM12L),
|
||||||
|
_DEF_AMD64_REG(XMM13L),
|
||||||
|
_DEF_AMD64_REG(XMM14L),
|
||||||
|
_DEF_AMD64_REG(XMM15L),
|
||||||
|
_DEF_AMD64_REG(XMM8H),
|
||||||
|
_DEF_AMD64_REG(XMM9H),
|
||||||
|
_DEF_AMD64_REG(XMM10H),
|
||||||
|
_DEF_AMD64_REG(XMM11H),
|
||||||
|
_DEF_AMD64_REG(XMM12H),
|
||||||
|
_DEF_AMD64_REG(XMM13H),
|
||||||
|
_DEF_AMD64_REG(XMM14H),
|
||||||
|
_DEF_AMD64_REG(XMM15H),
|
||||||
|
_DEF_AMD64_REG(EMM8L),
|
||||||
|
_DEF_AMD64_REG(EMM9L),
|
||||||
|
_DEF_AMD64_REG(EMM10L),
|
||||||
|
_DEF_AMD64_REG(EMM11L),
|
||||||
|
_DEF_AMD64_REG(EMM12L),
|
||||||
|
_DEF_AMD64_REG(EMM13L),
|
||||||
|
_DEF_AMD64_REG(EMM14L),
|
||||||
|
_DEF_AMD64_REG(EMM15L),
|
||||||
|
_DEF_AMD64_REG(EMM8H),
|
||||||
|
_DEF_AMD64_REG(EMM9H),
|
||||||
|
_DEF_AMD64_REG(EMM10H),
|
||||||
|
_DEF_AMD64_REG(EMM11H),
|
||||||
|
_DEF_AMD64_REG(EMM12H),
|
||||||
|
_DEF_AMD64_REG(EMM13H),
|
||||||
|
_DEF_AMD64_REG(EMM14H),
|
||||||
|
_DEF_AMD64_REG(EMM15H),
|
||||||
|
_DEF_AMD64_REG(SIL),
|
||||||
|
_DEF_AMD64_REG(DIL),
|
||||||
|
_DEF_AMD64_REG(BPL),
|
||||||
|
_DEF_AMD64_REG(SPL),
|
||||||
|
_DEF_AMD64_REG(RAX),
|
||||||
|
_DEF_AMD64_REG(RBX),
|
||||||
|
_DEF_AMD64_REG(RCX),
|
||||||
|
_DEF_AMD64_REG(RDX),
|
||||||
|
_DEF_AMD64_REG(RSI),
|
||||||
|
_DEF_AMD64_REG(RDI),
|
||||||
|
_DEF_AMD64_REG(RBP),
|
||||||
|
_DEF_AMD64_REG(RSP),
|
||||||
|
_DEF_AMD64_REG(R8),
|
||||||
|
_DEF_AMD64_REG(R9),
|
||||||
|
_DEF_AMD64_REG(R10),
|
||||||
|
_DEF_AMD64_REG(R11),
|
||||||
|
_DEF_AMD64_REG(R12),
|
||||||
|
_DEF_AMD64_REG(R13),
|
||||||
|
_DEF_AMD64_REG(R14),
|
||||||
|
_DEF_AMD64_REG(R15),
|
||||||
|
_DEF_AMD64_REG(R8B),
|
||||||
|
_DEF_AMD64_REG(R9B),
|
||||||
|
_DEF_AMD64_REG(R10B),
|
||||||
|
_DEF_AMD64_REG(R11B),
|
||||||
|
_DEF_AMD64_REG(R12B),
|
||||||
|
_DEF_AMD64_REG(R13B),
|
||||||
|
_DEF_AMD64_REG(R14B),
|
||||||
|
_DEF_AMD64_REG(R15B),
|
||||||
|
_DEF_AMD64_REG(R8W),
|
||||||
|
_DEF_AMD64_REG(R9W),
|
||||||
|
_DEF_AMD64_REG(R10W),
|
||||||
|
_DEF_AMD64_REG(R11W),
|
||||||
|
_DEF_AMD64_REG(R12W),
|
||||||
|
_DEF_AMD64_REG(R13W),
|
||||||
|
_DEF_AMD64_REG(R14W),
|
||||||
|
_DEF_AMD64_REG(R15W),
|
||||||
|
_DEF_AMD64_REG(R8D),
|
||||||
|
_DEF_AMD64_REG(R9D),
|
||||||
|
_DEF_AMD64_REG(R10D),
|
||||||
|
_DEF_AMD64_REG(R11D),
|
||||||
|
_DEF_AMD64_REG(R12D),
|
||||||
|
_DEF_AMD64_REG(R13D),
|
||||||
|
_DEF_AMD64_REG(R14D),
|
||||||
|
_DEF_AMD64_REG(R15D)
|
||||||
|
};
|
||||||
|
#undef _DEF_AMD64_REG
|
||||||
|
|
||||||
|
const size_t Symbol::cntAmd64RegName= _countof(amd64RegName);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
}
|
482
pykd/diaregs.h
Normal file
482
pykd/diaregs.h
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
// i386
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_NONE);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_AL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_BL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_AH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_BH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_AX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_BX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_SP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_BP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_SI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EAX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ECX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EDX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EBX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ESP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EBP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ESI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EDI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ES);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_SS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_GS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_IP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FLAGS );
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EIP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EFLAGS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_TEMP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_TEMPH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_QUOTE);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PCDR3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PCDR4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PCDR5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PCDR6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PCDR7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CR0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CR1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CR2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CR3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CR4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_DR7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_GDTR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_GDTL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_IDTR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_IDTL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_LDTR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_TR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO8);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_PSEUDO9);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ST7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_CTRL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_STAT);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_TAG);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FPIP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FPCS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FPDO);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FPDS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_ISEM);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FPEIP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_FPEDO);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM00);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM01);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM02);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM03);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM10);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM11);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM12);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM13);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM20);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM21);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM22);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM23);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM30);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM31);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM32);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM33);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM40);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM41);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM42);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM43);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM50);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM51);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM52);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM53);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM60);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM61);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM62);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM63);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM70);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM71);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM72);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM73);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM0L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM1L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM2L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM3L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM4L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM5L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM6L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM7L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM0H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM1H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM2H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM3H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM4H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM5H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM6H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_XMM7H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MXCSR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EDXEAX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM0L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM1L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM2L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM3L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM4L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM5L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM6L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM7L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM0H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM1H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM2H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM3H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM4H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM5H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM6H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_EMM7H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM00);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM01);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM10);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM11);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM20);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM21);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM30);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM31);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM40);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM41);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM50);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM51);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM60);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM61);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM70);
|
||||||
|
DEF_PY_CONST_ULONG(CV_REG_MM71);
|
||||||
|
|
||||||
|
// amd64
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_AL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_BL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_AH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_BH);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_AX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_BX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_SP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_BP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_SI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EAX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ECX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EDX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EBX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ESP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EBP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ESI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EDI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ES);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_SS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_GS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FLAGS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RIP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EFLAGS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CR0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CR1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CR2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CR3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CR4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CR8);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR8);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR9);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR10);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR11);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR12);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR13);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR14);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DR15);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_GDTR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_GDTL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_IDTR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_IDTL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_LDTR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_TR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ST7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_CTRL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_STAT);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_TAG);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FPIP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FPCS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FPDO);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FPDS);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_ISEM);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FPEIP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_FPEDO);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM0H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM1H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM2H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM3H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM4H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM5H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM6H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM7H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MXCSR);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM0L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM1L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM2L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM3L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM4L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM5L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM6L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM7L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM0H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM1H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM2H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM3H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM4H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM5H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM6H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM7H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM00);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM01);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM10);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM11);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM20);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM21);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM30);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM31);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM40);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM41);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM50);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM51);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM60);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM61);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM70);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_MM71);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15_0);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15_1);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15_2);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15_3);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM8H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM9H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM10H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM11H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM12H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM13H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM14H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_XMM15H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM8L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM9L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM10L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM11L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM12L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM13L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM14L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM15L);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM8H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM9H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM10H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM11H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM12H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM13H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM14H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_EMM15H);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_SIL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_DIL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_BPL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_SPL);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RAX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RBX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RCX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RDX);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RSI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RDI);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RBP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_RSP);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R8);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R9);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R10);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R11);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R12);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R13);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R14);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R15);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R8B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R9B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R10B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R11B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R12B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R13B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R14B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R15B);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R8W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R9W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R10W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R11W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R12W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R13W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R14W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R15W);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R8D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R9D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R10D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R11D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R12D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R13D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R14D);
|
||||||
|
DEF_PY_CONST_ULONG(CV_AMD64_R15D);
|
@ -14,94 +14,6 @@ const std::string Exception::descPrefix("pyDia: ");
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#define _DEF_SYM_TAG_VAL(x) Symbol::ValueNameEntry(SymTag##x, #x)
|
|
||||||
const Symbol::ValueNameEntry Symbol::symTagName[SymTagMax] = {
|
|
||||||
_DEF_SYM_TAG_VAL(Null),
|
|
||||||
_DEF_SYM_TAG_VAL(Exe),
|
|
||||||
_DEF_SYM_TAG_VAL(Compiland),
|
|
||||||
_DEF_SYM_TAG_VAL(CompilandDetails),
|
|
||||||
_DEF_SYM_TAG_VAL(CompilandEnv),
|
|
||||||
_DEF_SYM_TAG_VAL(Function),
|
|
||||||
_DEF_SYM_TAG_VAL(Block),
|
|
||||||
_DEF_SYM_TAG_VAL(Data),
|
|
||||||
_DEF_SYM_TAG_VAL(Annotation),
|
|
||||||
_DEF_SYM_TAG_VAL(Label),
|
|
||||||
_DEF_SYM_TAG_VAL(PublicSymbol),
|
|
||||||
_DEF_SYM_TAG_VAL(UDT),
|
|
||||||
_DEF_SYM_TAG_VAL(Enum),
|
|
||||||
_DEF_SYM_TAG_VAL(FunctionType),
|
|
||||||
_DEF_SYM_TAG_VAL(PointerType),
|
|
||||||
_DEF_SYM_TAG_VAL(ArrayType),
|
|
||||||
_DEF_SYM_TAG_VAL(BaseType),
|
|
||||||
_DEF_SYM_TAG_VAL(Typedef),
|
|
||||||
_DEF_SYM_TAG_VAL(BaseClass),
|
|
||||||
_DEF_SYM_TAG_VAL(Friend),
|
|
||||||
_DEF_SYM_TAG_VAL(FunctionArgType),
|
|
||||||
_DEF_SYM_TAG_VAL(FuncDebugStart),
|
|
||||||
_DEF_SYM_TAG_VAL(FuncDebugEnd),
|
|
||||||
_DEF_SYM_TAG_VAL(UsingNamespace),
|
|
||||||
_DEF_SYM_TAG_VAL(VTableShape),
|
|
||||||
_DEF_SYM_TAG_VAL(VTable),
|
|
||||||
_DEF_SYM_TAG_VAL(Custom),
|
|
||||||
_DEF_SYM_TAG_VAL(Thunk),
|
|
||||||
_DEF_SYM_TAG_VAL(CustomType),
|
|
||||||
_DEF_SYM_TAG_VAL(ManagedType),
|
|
||||||
_DEF_SYM_TAG_VAL(Dimension)
|
|
||||||
};
|
|
||||||
#undef _DEF_SYM_TAG_VAL
|
|
||||||
|
|
||||||
#define _DEF_LOC_TYPE(x) Symbol::ValueNameEntry(LocIs##x, #x)
|
|
||||||
const Symbol::ValueNameEntry Symbol::locTypeName[LocTypeMax] = {
|
|
||||||
_DEF_LOC_TYPE(Null),
|
|
||||||
_DEF_LOC_TYPE(Static),
|
|
||||||
_DEF_LOC_TYPE(TLS),
|
|
||||||
_DEF_LOC_TYPE(RegRel),
|
|
||||||
_DEF_LOC_TYPE(ThisRel),
|
|
||||||
_DEF_LOC_TYPE(Enregistered),
|
|
||||||
_DEF_LOC_TYPE(BitField),
|
|
||||||
_DEF_LOC_TYPE(Slot),
|
|
||||||
_DEF_LOC_TYPE(IlRel),
|
|
||||||
Symbol::ValueNameEntry(LocInMetaData, "InMetaData"),
|
|
||||||
_DEF_LOC_TYPE(Constant)
|
|
||||||
};
|
|
||||||
#undef _DEF_LOC_TYPE
|
|
||||||
|
|
||||||
#define _DEF_BASIC_TYPE(x) Symbol::ValueNameEntry(bt##x, #x)
|
|
||||||
const Symbol::ValueNameEntry Symbol::basicTypeName[] = {
|
|
||||||
_DEF_BASIC_TYPE(NoType),
|
|
||||||
_DEF_BASIC_TYPE(Void),
|
|
||||||
_DEF_BASIC_TYPE(Char),
|
|
||||||
_DEF_BASIC_TYPE(WChar),
|
|
||||||
_DEF_BASIC_TYPE(Int),
|
|
||||||
_DEF_BASIC_TYPE(UInt),
|
|
||||||
_DEF_BASIC_TYPE(Float),
|
|
||||||
_DEF_BASIC_TYPE(BCD),
|
|
||||||
_DEF_BASIC_TYPE(Bool),
|
|
||||||
_DEF_BASIC_TYPE(Long),
|
|
||||||
_DEF_BASIC_TYPE(ULong),
|
|
||||||
_DEF_BASIC_TYPE(Currency),
|
|
||||||
_DEF_BASIC_TYPE(Date),
|
|
||||||
_DEF_BASIC_TYPE(Variant),
|
|
||||||
_DEF_BASIC_TYPE(Complex),
|
|
||||||
_DEF_BASIC_TYPE(Bit),
|
|
||||||
_DEF_BASIC_TYPE(BSTR),
|
|
||||||
_DEF_BASIC_TYPE(Hresult)
|
|
||||||
};
|
|
||||||
#undef _DEF_BASIC_TYPE
|
|
||||||
|
|
||||||
const size_t Symbol::cntBasicTypeName = _countof(Symbol::basicTypeName);
|
|
||||||
|
|
||||||
#define _DEF_UDT_KIND(x) Symbol::ValueNameEntry(Udt##x, #x)
|
|
||||||
const Symbol::ValueNameEntry Symbol::udtKindName[] = {
|
|
||||||
_DEF_UDT_KIND(Struct),
|
|
||||||
_DEF_UDT_KIND(Class),
|
|
||||||
_DEF_UDT_KIND(Union)
|
|
||||||
};
|
|
||||||
#undef _DEF_UDT_KIND
|
|
||||||
const size_t Symbol::cntUdtKindName = _countof(udtKindName);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#define callSymbol(method) \
|
#define callSymbol(method) \
|
||||||
callSymbolT( &IDiaSymbol::##method, __FUNCTION__, #method)
|
callSymbolT( &IDiaSymbol::##method, __FUNCTION__, #method)
|
||||||
|
|
||||||
@ -170,7 +82,7 @@ std::list< Symbol > Symbol::findChildrenImpl(
|
|||||||
DiaSymbolPtr child;
|
DiaSymbolPtr child;
|
||||||
ULONG celt;
|
ULONG celt;
|
||||||
while ( SUCCEEDED(symbols->Next(1, &child, &celt)) && (celt == 1) )
|
while ( SUCCEEDED(symbols->Next(1, &child, &celt)) && (celt == 1) )
|
||||||
childList.push_back( Symbol(child) );
|
childList.push_back( Symbol(child, m_machineType) );
|
||||||
|
|
||||||
return childList;
|
return childList;
|
||||||
}
|
}
|
||||||
@ -194,14 +106,14 @@ std::string Symbol::getName()
|
|||||||
|
|
||||||
Symbol Symbol::getType()
|
Symbol Symbol::getType()
|
||||||
{
|
{
|
||||||
return Symbol( callSymbol(get_type) );
|
return Symbol( callSymbol(get_type), m_machineType );
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Symbol Symbol::getIndexType()
|
Symbol Symbol::getIndexType()
|
||||||
{
|
{
|
||||||
return Symbol( callSymbol(get_arrayIndexType) );
|
return Symbol( callSymbol(get_arrayIndexType), m_machineType );
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -329,6 +241,13 @@ ULONG Symbol::getUdtKind()
|
|||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
ULONG Symbol::getRegisterId()
|
||||||
|
{
|
||||||
|
return callSymbol(get_registerId);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Symbol Symbol::getChildByName(const std::string &_name)
|
Symbol Symbol::getChildByName(const std::string &_name)
|
||||||
{
|
{
|
||||||
throwIfNull(__FUNCTION__);
|
throwIfNull(__FUNCTION__);
|
||||||
@ -359,7 +278,7 @@ Symbol Symbol::getChildByName(const std::string &_name)
|
|||||||
if (S_OK != hres)
|
if (S_OK != hres)
|
||||||
throw Exception("Call IDiaEnumSymbols::Item", hres);
|
throw Exception("Call IDiaEnumSymbols::Item", hres);
|
||||||
|
|
||||||
return Symbol(child);
|
return Symbol(child, m_machineType);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -418,30 +337,23 @@ Symbol Symbol::getChildByIndex(ULONG _index)
|
|||||||
if (S_OK != hres)
|
if (S_OK != hres)
|
||||||
throw Exception("Call IDiaEnumSymbols::Item", hres);
|
throw Exception("Call IDiaEnumSymbols::Item", hres);
|
||||||
|
|
||||||
return Symbol(child);
|
return Symbol(child, m_machineType);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
std::string Symbol::print()
|
std::string Symbol::print()
|
||||||
{
|
{
|
||||||
return printImpl(m_symbol);
|
return printImpl(m_symbol, m_machineType);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
std::string Symbol::printImpl(IDiaSymbol *_symbol, ULONG indent)
|
std::string Symbol::printImpl(IDiaSymbol *_symbol, DWORD machineType, ULONG indent /*= 0*/)
|
||||||
{
|
{
|
||||||
std::stringstream sstream;
|
std::stringstream sstream;
|
||||||
for (ULONG i =0; i < indent; ++i)
|
for (ULONG i =0; i < indent; ++i)
|
||||||
sstream << " ";
|
sstream << " ";
|
||||||
|
|
||||||
if (indent >= 3)
|
|
||||||
{
|
|
||||||
sstream << "<...>";
|
|
||||||
return sstream.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_symbol)
|
if (_symbol)
|
||||||
{
|
{
|
||||||
DWORD dwValue;
|
DWORD dwValue;
|
||||||
@ -452,13 +364,102 @@ std::string Symbol::printImpl(IDiaSymbol *_symbol, ULONG indent)
|
|||||||
ULONGLONG ullValue;
|
ULONGLONG ullValue;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
|
||||||
|
DWORD locType = LocIsNull;
|
||||||
|
hres = _symbol->get_locationType(&locType);
|
||||||
|
bool bLocation = (S_OK == hres);
|
||||||
|
if (bLocation)
|
||||||
|
{
|
||||||
hres = _symbol->get_offset(&lValue);
|
hres = _symbol->get_offset(&lValue);
|
||||||
|
|
||||||
|
const bool bNegOffset = lValue < 0;
|
||||||
|
lValue = bNegOffset ? -1 * lValue : lValue;
|
||||||
|
|
||||||
|
switch (locType)
|
||||||
|
{
|
||||||
|
case LocIsBitField:
|
||||||
|
case LocIsThisRel:
|
||||||
|
assert(S_OK == hres);
|
||||||
|
sstream << (bNegOffset ? "-" : "+") << "0x" << std::hex << lValue;
|
||||||
|
if (LocIsBitField == locType)
|
||||||
|
{
|
||||||
|
hres = _symbol->get_bitPosition(&dwValue);
|
||||||
if (S_OK == hres)
|
if (S_OK == hres)
|
||||||
sstream << ".[" << std::dec << lValue << + "] ";
|
sstream << ", Bit position: " << dwValue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LocIsEnregistered:
|
||||||
|
case LocIsRegRel:
|
||||||
|
hres = _symbol->get_registerId(&dwValue);
|
||||||
|
if (S_OK == hres)
|
||||||
|
{
|
||||||
|
const char *regName = NULL;
|
||||||
|
if (IMAGE_FILE_MACHINE_I386 == machineType)
|
||||||
|
{
|
||||||
|
for (ULONG i = 0; i < cntI386RegName; ++i)
|
||||||
|
{
|
||||||
|
if (dwValue == i386RegName[i].first)
|
||||||
|
{
|
||||||
|
regName = i386RegName[i].second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (IMAGE_FILE_MACHINE_AMD64 == machineType)
|
||||||
|
{
|
||||||
|
for (ULONG i = 0; i < cntI386RegName; ++i)
|
||||||
|
{
|
||||||
|
if (dwValue == i386RegName[i].first)
|
||||||
|
{
|
||||||
|
regName = i386RegName[i].second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!regName)
|
||||||
|
{
|
||||||
|
sstream << locTypeName[locType].second;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (LocIsEnregistered == locType)
|
||||||
|
{
|
||||||
|
sstream << regName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sstream << "[" << regName;
|
||||||
|
sstream << (bNegOffset ? "-" : "+") << "0x" << std::hex << lValue;
|
||||||
|
sstream << "]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sstream << locTypeName[locType].second;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (S_OK == _symbol->get_relativeVirtualAddress(&dwValue))
|
||||||
|
sstream << "RVA:0x" << std::hex << dwValue;
|
||||||
|
else if (locType < _countof(locTypeName))
|
||||||
|
sstream << "Location: " << locTypeName[locType].second;
|
||||||
|
if (S_OK == hres)
|
||||||
|
{
|
||||||
|
sstream << ", Offset: ";
|
||||||
|
sstream << (bNegOffset ? "-" : "+") << "0x" << std::hex << lValue;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
hres = _symbol->get_symTag(&dwValue);
|
hres = _symbol->get_symTag(&dwValue);
|
||||||
if ((S_OK == hres) && dwValue < _countof(symTagName))
|
if ((S_OK == hres) && dwValue < _countof(symTagName))
|
||||||
{
|
{
|
||||||
|
if (bLocation)
|
||||||
|
sstream << ", ";
|
||||||
|
|
||||||
sstream << symTagName[dwValue].second;
|
sstream << symTagName[dwValue].second;
|
||||||
if (SymTagUDT == symTagName[dwValue].first)
|
if (SymTagUDT == symTagName[dwValue].first)
|
||||||
{
|
{
|
||||||
@ -469,7 +470,7 @@ std::string Symbol::printImpl(IDiaSymbol *_symbol, ULONG indent)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sstream << "!unknown!";
|
sstream << "!invalid symTag!";
|
||||||
}
|
}
|
||||||
sstream << ", ";
|
sstream << ", ";
|
||||||
|
|
||||||
@ -484,23 +485,6 @@ std::string Symbol::printImpl(IDiaSymbol *_symbol, ULONG indent)
|
|||||||
if (S_OK == hres)
|
if (S_OK == hres)
|
||||||
sstream << ", Length: 0x" << std::hex << ullValue;
|
sstream << ", Length: 0x" << std::hex << ullValue;
|
||||||
|
|
||||||
hres = _symbol->get_locationType(&dwValue);
|
|
||||||
if ((S_OK == hres) && dwValue < _countof(locTypeName))
|
|
||||||
{
|
|
||||||
sstream << ", Location: " << locTypeName[dwValue].second;
|
|
||||||
|
|
||||||
if (LocIsBitField == locTypeName[dwValue].first)
|
|
||||||
{
|
|
||||||
hres = _symbol->get_bitPosition(&dwValue);
|
|
||||||
if (S_OK == hres)
|
|
||||||
sstream << ", Bit position: " << dwValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
hres = _symbol->get_relativeVirtualAddress(&dwValue);
|
|
||||||
if (S_OK == hres)
|
|
||||||
sstream << ", RVA: 0x" << std::hex << dwValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
bValue = false;
|
bValue = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -595,7 +579,7 @@ std::string Symbol::printImpl(IDiaSymbol *_symbol, ULONG indent)
|
|||||||
for (ULONG i =0; i < indent; ++i)
|
for (ULONG i =0; i < indent; ++i)
|
||||||
sstream << " ";
|
sstream << " ";
|
||||||
sstream << "Type: " << std::endl;
|
sstream << "Type: " << std::endl;
|
||||||
sstream << printImpl(pType, indent + 1).c_str();
|
sstream << printImpl(pType, machineType, indent + 1).c_str();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -608,15 +592,30 @@ std::string Symbol::printImpl(IDiaSymbol *_symbol, ULONG indent)
|
|||||||
nsCaseSensitive,
|
nsCaseSensitive,
|
||||||
&symbols);
|
&symbols);
|
||||||
if (S_OK == hres)
|
if (S_OK == hres)
|
||||||
|
{
|
||||||
|
if (indent <= 2)
|
||||||
{
|
{
|
||||||
DiaSymbolPtr child;
|
DiaSymbolPtr child;
|
||||||
ULONG celt;
|
ULONG celt;
|
||||||
while ( SUCCEEDED(symbols->Next(1, &child, &celt)) && (celt == 1) )
|
while ( SUCCEEDED(symbols->Next(1, &child, &celt)) && (celt == 1) )
|
||||||
{
|
{
|
||||||
sstream << std::endl << printImpl(child, indent + 1).c_str();
|
sstream << std::endl << printImpl(child, machineType, indent + 1).c_str();
|
||||||
child.Release();
|
child.Release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lValue = 0;
|
||||||
|
symbols->get_Count(&lValue);
|
||||||
|
if (lValue)
|
||||||
|
{
|
||||||
|
sstream << std::endl;
|
||||||
|
for (ULONG i =0; i < indent+1; ++i)
|
||||||
|
sstream << " ";
|
||||||
|
sstream << "<...>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return sstream.str();
|
return sstream.str();
|
||||||
@ -628,10 +627,11 @@ GlobalScope::GlobalScope(
|
|||||||
__inout DiaDataSourcePtr &_scope,
|
__inout DiaDataSourcePtr &_scope,
|
||||||
__inout DiaSessionPtr &_session,
|
__inout DiaSessionPtr &_session,
|
||||||
__inout DiaSymbolPtr &_globalScope
|
__inout DiaSymbolPtr &_globalScope
|
||||||
) : Symbol(_globalScope)
|
) : Symbol(_globalScope, CV_CFL_80386)
|
||||||
, m_source( _scope.Detach() )
|
, m_source( _scope.Detach() )
|
||||||
, m_session( _session.Detach() )
|
, m_session( _session.Detach() )
|
||||||
{
|
{
|
||||||
|
m_symbol->get_machineType(&m_machineType);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -109,6 +109,8 @@ public:
|
|||||||
|
|
||||||
ULONG getUdtKind();
|
ULONG getUdtKind();
|
||||||
|
|
||||||
|
ULONG getRegisterId();
|
||||||
|
|
||||||
Symbol getChildByName(const std::string &_name);
|
Symbol getChildByName(const std::string &_name);
|
||||||
ULONG getChildCount();
|
ULONG getChildCount();
|
||||||
Symbol getChildByIndex(ULONG _index);
|
Symbol getChildByIndex(ULONG _index);
|
||||||
@ -128,9 +130,15 @@ public:
|
|||||||
static const ValueNameEntry udtKindName[];
|
static const ValueNameEntry udtKindName[];
|
||||||
static const size_t cntUdtKindName;
|
static const size_t cntUdtKindName;
|
||||||
|
|
||||||
|
static const ValueNameEntry i386RegName[];
|
||||||
|
static const size_t cntI386RegName;
|
||||||
|
|
||||||
|
static const ValueNameEntry amd64RegName[];
|
||||||
|
static const size_t cntAmd64RegName;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
static std::string printImpl(IDiaSymbol *_symbol, ULONG indent = 0);
|
static std::string printImpl(IDiaSymbol *_symbol, DWORD machineType, ULONG indent = 0);
|
||||||
|
|
||||||
template <typename TRet>
|
template <typename TRet>
|
||||||
TRet callSymbolT(
|
TRet callSymbolT(
|
||||||
@ -155,15 +163,20 @@ protected:
|
|||||||
throw Exception(std::string(desc) + " failed, DIA object is not initialized");
|
throw Exception(std::string(desc) + " failed, DIA object is not initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
Symbol(__inout DiaSymbolPtr &_symbol) {
|
Symbol(__inout DiaSymbolPtr &_symbol, DWORD machineType)
|
||||||
|
: m_machineType(machineType)
|
||||||
|
{
|
||||||
m_symbol = _symbol.Detach();
|
m_symbol = _symbol.Detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
Symbol(__in IDiaSymbol *_symbol) {
|
Symbol(__in IDiaSymbol *_symbol, DWORD machineType)
|
||||||
|
: m_machineType(machineType)
|
||||||
|
{
|
||||||
m_symbol = _symbol;
|
m_symbol = _symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
DiaSymbolPtr m_symbol;
|
DiaSymbolPtr m_symbol;
|
||||||
|
DWORD m_machineType;
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -176,6 +189,10 @@ public:
|
|||||||
// create GlobalScope instance
|
// create GlobalScope instance
|
||||||
static GlobalScope openPdb(const std::string &filePath);
|
static GlobalScope openPdb(const std::string &filePath);
|
||||||
|
|
||||||
|
ULONG getMachineType() const {
|
||||||
|
return m_machineType;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
GlobalScope(
|
GlobalScope(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="windows-1251"?>
|
<?xml version="1.0" encoding="windows-1251"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="9,00"
|
Version="9.00"
|
||||||
Name="pykd"
|
Name="pykd"
|
||||||
ProjectGUID="{FE961905-666F-4908-A212-961465F46F13}"
|
ProjectGUID="{FE961905-666F-4908-A212-961465F46F13}"
|
||||||
RootNamespace="pykd"
|
RootNamespace="pykd"
|
||||||
@ -365,6 +365,10 @@
|
|||||||
RelativePath=".\dbgmem.cpp"
|
RelativePath=".\dbgmem.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\diadata.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\diawrapper.cpp"
|
RelativePath=".\diawrapper.cpp"
|
||||||
>
|
>
|
||||||
@ -435,6 +439,10 @@
|
|||||||
RelativePath=".\dbgobj.h"
|
RelativePath=".\dbgobj.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\diaregs.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\diawrapper.h"
|
RelativePath=".\diawrapper.h"
|
||||||
>
|
>
|
||||||
|
@ -8,60 +8,60 @@ import pykd
|
|||||||
|
|
||||||
class DiaTest( unittest.TestCase ):
|
class DiaTest( unittest.TestCase ):
|
||||||
def testFind(self):
|
def testFind(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertNotEqual(0, len(globalScope))
|
self.assertNotEqual(0, len(gScope))
|
||||||
symFunction = globalScope.find("FuncWithName0")
|
symFunction = gScope.find("FuncWithName0")
|
||||||
self.assertTrue(1 == len( symFunction ))
|
self.assertTrue(1 == len( symFunction ))
|
||||||
symFunction = globalScope.findEx(pykd.SymTagNull,
|
symFunction = gScope.findEx(pykd.SymTagNull,
|
||||||
"FuNc*Name?",
|
"FuNc*Name?",
|
||||||
pykd.nsCaseInRegularExpression)
|
pykd.nsCaseInRegularExpression)
|
||||||
self.assertTrue(len(symFunction) > 1)
|
self.assertTrue(len(symFunction) > 1)
|
||||||
|
|
||||||
def testSize(self):
|
def testSize(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertEqual(1, globalScope["g_ucharValue"].type().size())
|
self.assertEqual(1, gScope["g_ucharValue"].type().size())
|
||||||
self.assertEqual(2, globalScope["g_ushortValue"].type().size())
|
self.assertEqual(2, gScope["g_ushortValue"].type().size())
|
||||||
self.assertEqual(4, globalScope["g_ulongValue"].type().size())
|
self.assertEqual(4, gScope["g_ulongValue"].type().size())
|
||||||
self.assertEqual(8, globalScope["g_ulonglongValue"].type().size())
|
self.assertEqual(8, gScope["g_ulonglongValue"].type().size())
|
||||||
|
|
||||||
def testValue(self):
|
def testValue(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertEqual(0x5555, globalScope["g_constNumValue"].value())
|
self.assertEqual(0x5555, gScope["g_constNumValue"].value())
|
||||||
self.assertEqual(True, globalScope["g_constBoolValue"].value())
|
self.assertEqual(True, gScope["g_constBoolValue"].value())
|
||||||
|
|
||||||
def testName(self):
|
def testName(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertEqual("g_constNumValue", globalScope["g_constNumValue"].name())
|
self.assertEqual("g_constNumValue", gScope["g_constNumValue"].name())
|
||||||
self.assertEqual("FuncWithName0", globalScope["FuncWithName0"].name())
|
self.assertEqual("FuncWithName0", gScope["FuncWithName0"].name())
|
||||||
|
|
||||||
def testRva(self):
|
def testRva(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
_rva = globalScope["FuncWithName0"].rva()
|
_rva = gScope["FuncWithName0"].rva()
|
||||||
self.assertNotEqual(0, _rva)
|
self.assertNotEqual(0, _rva)
|
||||||
self.assertTrue( _rva < (target.module.end() - target.module.begin()) )
|
self.assertTrue( _rva < (target.module.end() - target.module.begin()) )
|
||||||
_rva = globalScope["g_string"].rva()
|
_rva = gScope["g_string"].rva()
|
||||||
self.assertNotEqual(0, _rva)
|
self.assertNotEqual(0, _rva)
|
||||||
self.assertTrue( _rva < (target.module.end() - target.module.begin()) )
|
self.assertTrue( _rva < (target.module.end() - target.module.begin()) )
|
||||||
|
|
||||||
def testSymTag(self):
|
def testSymTag(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertEqual(pykd.SymTagFunction, globalScope["FuncWithName0"].symTag())
|
self.assertEqual(pykd.SymTagFunction, gScope["FuncWithName0"].symTag())
|
||||||
self.assertEqual(pykd.SymTagData, globalScope["g_string"].symTag())
|
self.assertEqual(pykd.SymTagData, gScope["g_string"].symTag())
|
||||||
|
|
||||||
def testLocType(self):
|
def testLocType(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertEqual(pykd.LocIsConstant, globalScope["g_constNumValue"].locType())
|
self.assertEqual(pykd.LocIsConstant, gScope["g_constNumValue"].locType())
|
||||||
self.assertEqual(pykd.LocIsStatic, globalScope["FuncWithName1"].locType())
|
self.assertEqual(pykd.LocIsStatic, gScope["FuncWithName1"].locType())
|
||||||
|
|
||||||
def testBasicType(self):
|
def testBasicType(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertFalse(globalScope["g_string"].type().isBasic())
|
self.assertFalse(gScope["g_string"].type().isBasic())
|
||||||
self.assertEqual(pykd.btBool, globalScope["g_constBoolValue"].type().baseType())
|
self.assertEqual(pykd.btBool, gScope["g_constBoolValue"].type().baseType())
|
||||||
self.assertEqual(pykd.btULong, globalScope["g_ulongValue"].type().baseType())
|
self.assertEqual(pykd.btULong, gScope["g_ulongValue"].type().baseType())
|
||||||
|
|
||||||
def testBits(self):
|
def testBits(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
structWithBits = globalScope["structWithBits"]
|
structWithBits = gScope["structWithBits"]
|
||||||
bitField = structWithBits["m_bit0_4"]
|
bitField = structWithBits["m_bit0_4"]
|
||||||
self.assertEqual(pykd.LocIsBitField, bitField.locType())
|
self.assertEqual(pykd.LocIsBitField, bitField.locType())
|
||||||
self.assertEqual(0, bitField.bitPos())
|
self.assertEqual(0, bitField.bitPos())
|
||||||
@ -76,21 +76,21 @@ class DiaTest( unittest.TestCase ):
|
|||||||
self.assertEqual(2, bitField.size())
|
self.assertEqual(2, bitField.size())
|
||||||
|
|
||||||
def testIndexId(self):
|
def testIndexId(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertNotEqual( globalScope["classChild"].indexId(),
|
self.assertNotEqual( gScope["classChild"].indexId(),
|
||||||
globalScope["classBase"].indexId() )
|
gScope["classBase"].indexId() )
|
||||||
self.assertNotEqual( globalScope["FuncWithName0"].indexId(),
|
self.assertNotEqual( gScope["FuncWithName0"].indexId(),
|
||||||
globalScope["FuncWithName1"].indexId() )
|
gScope["FuncWithName1"].indexId() )
|
||||||
|
|
||||||
def testUdtKind(self):
|
def testUdtKind(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
self.assertEqual(pykd.UdtStruct, globalScope["structWithBits"].udtKind())
|
self.assertEqual(pykd.UdtStruct, gScope["structWithBits"].udtKind())
|
||||||
self.assertEqual(pykd.UdtUnion, globalScope["unionTest"].udtKind())
|
self.assertEqual(pykd.UdtUnion, gScope["unionTest"].udtKind())
|
||||||
self.assertEqual(pykd.UdtClass, globalScope["classBase"].udtKind())
|
self.assertEqual(pykd.UdtClass, gScope["classBase"].udtKind())
|
||||||
|
|
||||||
def testOffset(self):
|
def testOffset(self):
|
||||||
globalScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
structTest = globalScope["structTest"]
|
structTest = gScope["structTest"]
|
||||||
self.assertEqual( 0, structTest["m_field0"].offset() )
|
self.assertEqual( 0, structTest["m_field0"].offset() )
|
||||||
self.assertTrue( structTest["m_field0"].offset() <
|
self.assertTrue( structTest["m_field0"].offset() <
|
||||||
structTest["m_field1"].offset() )
|
structTest["m_field1"].offset() )
|
||||||
@ -99,3 +99,8 @@ class DiaTest( unittest.TestCase ):
|
|||||||
self.assertTrue( structTest["m_field2"].offset() <
|
self.assertTrue( structTest["m_field2"].offset() <
|
||||||
structTest["m_field3"].offset() )
|
structTest["m_field3"].offset() )
|
||||||
self.assertTrue(structTest["m_field3"].offset() < structTest.size())
|
self.assertTrue(structTest["m_field3"].offset() < structTest.size())
|
||||||
|
|
||||||
|
def testMachine(self):
|
||||||
|
gScope = pykd.diaOpenPdb( str(target.module.pdb()) )
|
||||||
|
self.assertTrue( (gScope.machineType() == pykd.IMAGE_FILE_MACHINE_I386) or
|
||||||
|
(gScope.machineType() == pykd.IMAGE_FILE_MACHINE_AMD64) )
|
||||||
|
@ -67,12 +67,12 @@ void FuncWithName0()
|
|||||||
reinterpret_cast<classChild *>(&_classChild)->virtFunc2();
|
reinterpret_cast<classChild *>(&_classChild)->virtFunc2();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FuncWithName1()
|
void FuncWithName1(int a)
|
||||||
{
|
{
|
||||||
unionTest _unionTest;
|
unionTest _unionTest;
|
||||||
_unionTest.m_value = 0;
|
_unionTest.m_value = 0;
|
||||||
structTest _structTest;
|
structTest _structTest;
|
||||||
_structTest.m_field1 = 1;
|
_structTest.m_field1 = a;
|
||||||
struct2 _struct2;
|
struct2 _struct2;
|
||||||
RtlZeroMemory(&_struct2, sizeof(_struct2));
|
RtlZeroMemory(&_struct2, sizeof(_struct2));
|
||||||
}
|
}
|
||||||
@ -84,7 +84,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
// Let test scripts to execute
|
// Let test scripts to execute
|
||||||
__debugbreak();
|
__debugbreak();
|
||||||
FuncWithName0();
|
FuncWithName0();
|
||||||
FuncWithName1();
|
FuncWithName1(2);
|
||||||
}
|
}
|
||||||
catch(std::exception & ex)
|
catch(std::exception & ex)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user