[0.2.x] ~restored: disassemble effective offset

git-svn-id: https://pykd.svn.codeplex.com/svn@82240 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\EreTIk_cp 2013-01-11 12:52:19 +00:00 committed by Mikhail I. Izmestev
parent 911e36e14b
commit a59d64e04c
3 changed files with 8 additions and 3 deletions

View File

@ -10,6 +10,7 @@ namespace pykd {
/////////////////////////////////////////////////////////////////////////////////
Disasm::Disasm( ULONG64 offset )
: m_ea(0)
{
m_beginOffset = addr64(offset);
@ -27,7 +28,7 @@ void Disasm::doDisasm()
{
ULONG64 endOffset = 0;
disasmDisassembly( m_currentOffset, m_disasm, endOffset );
disasmDisassembly( m_currentOffset, m_disasm, endOffset, m_ea );
m_length = (ULONG)(endOffset - m_currentOffset);
}

View File

@ -3,6 +3,6 @@
namespace pykd {
void disasmAssemblay( ULONG64 offset, const std::string &instruction, ULONG64 &nextOffset );
void disasmDisassembly( ULONG64 offset, std::string &instruction, ULONG64 &nextOffset );
void disasmDisassembly( ULONG64 offset, std::string &instruction, ULONG64 &nextOffset, ULONG64 &ea );
} // end pykd namespace

View File

@ -19,7 +19,7 @@ void disasmAssemblay( ULONG64 offset, const std::string &instruction, ULONG64 &n
///////////////////////////////////////////////////////////////////////////////
void disasmDisassembly( ULONG64 offset, std::string &instruction, ULONG64 &nextOffset )
void disasmDisassembly( ULONG64 offset, std::string &instruction, ULONG64 &nextOffset, ULONG64 &ea )
{
PyThread_StateRestore pyThreadRestore( g_dbgEng->pystate );
@ -40,6 +40,10 @@ void disasmDisassembly( ULONG64 offset, std::string &instruction, ULONG64 &nextO
if ( FAILED( hres ) )
throw DbgException( "IDebugControl::Disassemble failed" );
hres = g_dbgEng->control->GetDisassembleEffectiveOffset(&ea);
if ( FAILED( hres ) )
ea = 0;
instruction = std::string( buffer, disasmSize - 2);
}