Added getMnemoric(): Retrieves a textual description of the current instruction.
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1269 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
@ -1,9 +1,6 @@
|
|||||||
#ifndef __REGISTER_HPP__
|
#ifndef __REGISTER_HPP__
|
||||||
#define __REGISTER_HPP__
|
#define __REGISTER_HPP__
|
||||||
|
|
||||||
// Author: Adrian Böckenkamp
|
|
||||||
// Date: 06.09.2011
|
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
@ -272,6 +269,14 @@ class RegisterManager
|
|||||||
* @return the base pointer
|
* @return the base pointer
|
||||||
*/
|
*/
|
||||||
virtual address_t getBasePointer() = 0;
|
virtual address_t getBasePointer() = 0;
|
||||||
|
/**
|
||||||
|
* Retrieves the textual description (mnemoric) for the current
|
||||||
|
* instruction.
|
||||||
|
* The format of the returned string is simulator-specific.
|
||||||
|
* @return the mnemoric of the current instruction whose address
|
||||||
|
* is given by \c getInstructionPointer().
|
||||||
|
*/
|
||||||
|
virtual const std::string& getMnemoric() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end-of-namespace: sal
|
} // end-of-namespace: sal
|
||||||
|
|||||||
@ -4,7 +4,9 @@
|
|||||||
#include "../Register.hpp"
|
#include "../Register.hpp"
|
||||||
|
|
||||||
#include "../../../bochs/bochs.h"
|
#include "../../../bochs/bochs.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
namespace sal {
|
namespace sal {
|
||||||
|
|
||||||
@ -237,6 +239,27 @@ class BochsRegisterManager : public RegisterManager
|
|||||||
return (static_cast<address_t>(getRegister(RID_EBP)->getData()));
|
return (static_cast<address_t>(getRegister(RID_EBP)->getData()));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Retrieves the textual description (mnemoric) for the current
|
||||||
|
* instruction. The format of the returned string is Bochs-specific.
|
||||||
|
* @return the mnemoric of the current instruction whose address
|
||||||
|
* is given by \c getInstructionPointer(). On errors, the
|
||||||
|
* returned string is empty
|
||||||
|
*/
|
||||||
|
const std::string& getMnemoric() const
|
||||||
|
{
|
||||||
|
static std::string str;
|
||||||
|
bxICacheEntry_c* pEntry = BX_CPU(0)->getICacheEntry();
|
||||||
|
assert(pEntry != NULL && "FATAL ERROR: Bochs internal function returned NULL (not expected)!");
|
||||||
|
bxInstruction_c* pInstr = pEntry->i;
|
||||||
|
assert(pInstr != NULL && "FATAL ERROR: Bochs internal member was NULL (not expected)!");
|
||||||
|
const char* pszName = get_bx_opcode_name(pInstr->getIaOpcode());
|
||||||
|
if (pszName != NULL)
|
||||||
|
str = pszName;
|
||||||
|
else
|
||||||
|
str.clear();
|
||||||
|
return str;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end-of-namespace: sal
|
} // end-of-namespace: sal
|
||||||
|
|||||||
Reference in New Issue
Block a user