From 316031fef141ba7c6448758534fe86f0d8175747 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Tue, 13 Jan 2015 09:25:54 +0000 Subject: [PATCH] [0.3.x] added : reg routine ( return a CPU register value by the register's number ) [0.3.x] added : getNumberRegisters routine ( return a number of CPU registers ) git-svn-id: https://pykd.svn.codeplex.com/svn@89625 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/pycpucontext.cpp | 17 +++++++++++++++++ pykd/pycpucontext.h | 7 +++++++ pykd/pymod.cpp | 4 ++++ 3 files changed, 28 insertions(+) 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,