diff --git a/pykd/pycpucontext.cpp b/pykd/pycpucontext.cpp index 89de9c6..b98c2fc 100644 --- a/pykd/pycpucontext.cpp +++ b/pykd/pycpucontext.cpp @@ -26,6 +26,23 @@ python::object getRegisterByName( const std::wstring &name ) /////////////////////////////////////////////////////////////////////////////// +python::object getRegisterByIndex(unsigned long index) +{ + kdlib::NumVariant var; + + do { + + AutoRestorePyState pystate; + + var = kdlib::getRegisterByIndex(index); + + } while(false); + + return NumVariantAdaptor::convertToPython( var ); +} + +/////////////////////////////////////////////////////////////////////////////// + python::list getCurrentStack() { kdlib::StackPtr stack; diff --git a/pykd/pycpucontext.h b/pykd/pycpucontext.h index 8ea2eed..d5ad0af 100644 --- a/pykd/pycpucontext.h +++ b/pykd/pycpucontext.h @@ -68,6 +68,13 @@ public: python::object getRegisterByName( const std::wstring &name ); +python::object getRegisterByIndex( unsigned long index ); + +inline unsigned long getNumberRegisters() { + AutoRestorePyState pystate; + return kdlib::getRegisterNumber(); +} + inline unsigned long long loadMSR( unsigned long msrIndex ) { AutoRestorePyState pystate; diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index aa23e99..ae796ab 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -337,6 +337,10 @@ BOOST_PYTHON_MODULE( pykd ) // CPU registers python::def( "reg", pykd::getRegisterByName, "Return a CPU regsiter value by the register's name" ); + python::def( "reg", pykd::getRegisterByIndex, + "Return a CPU register value by the register's number"); + python::def( "getNumberRegisters", pykd::getNumberRegisters, + "Return a number of CPU registers"); python::def ( "rdmsr", pykd::loadMSR, "Return MSR value" ); python::def( "wrmsr", pykd::setMSR,