retdec
|
#include <storage.h>
Public Types | |
enum class | eType { UNDEFINED = 0 , GLOBAL , REGISTER , STACK } |
Public Member Functions | |
Storage () | |
Storage query methods. | |
bool | isDefined () const |
bool | isUndefined () const |
bool | isMemory () const |
bool | isMemory (retdec::common::Address &globalAddress) const |
bool | isRegister () const |
bool | isRegister (std::string ®isterName) const |
bool | isRegister (int ®isterNumber) const |
bool | isStack () const |
bool | isStack (int &stackOffset) const |
Storage get methods. | |
retdec::common::Address | getAddress () const |
std::string | getRegisterName () const |
int | getStackOffset () const |
std::optional< unsigned > | getRegisterNumber () const |
Storage set methods. | |
void | setRegisterNumber (unsigned registerNumber) |
Static Public Member Functions | |
Storage named constructors. | |
static Storage | undefined () |
static Storage | onStack (int offset) |
static Storage | onStack (int offset, unsigned registerNumber) |
static Storage | inMemory (const retdec::common::Address &address) |
static Storage | inRegister (const std::string ®isterName) |
static Storage | inRegister (unsigned registerNumber) |
static Storage | inRegister (const std::string ®isterName, unsigned registerNumber) |
Protected Attributes | |
eType | type = eType::UNDEFINED |
int | _stackOffset = 0 |
std::string | _registerName |
retdec::common::Address | _globalAddress |
std::optional< unsigned > | _registerNumber |
Static Protected Attributes | |
static const int | UNDEF_REG_NUM = -1 |
Represents possible storages of objects, function returns, etc.
|
strong |
retdec::common::Storage::Storage | ( | ) |
retdec::common::Address retdec::common::Storage::getAddress | ( | ) | const |
std::string retdec::common::Storage::getRegisterName | ( | ) | const |
std::optional< unsigned > retdec::common::Storage::getRegisterNumber | ( | ) | const |
This method can be used on any storage type, which might contain register number. Right now, it is either register or stack storage.
int retdec::common::Storage::getStackOffset | ( | ) | const |
|
static |
|
static |
There are two possible register flavours: named and numbered registers. This creates register storage using register name.
|
static |
There are two possible register flavours: named and numbered registers. This creates register storage using register name, which also contains information about register's number and class.
|
static |
There are two possible register flavours: named and numbered registers. This creates register storage using register number.
bool retdec::common::Storage::isDefined | ( | ) | const |
bool retdec::common::Storage::isMemory | ( | ) | const |
bool retdec::common::Storage::isMemory | ( | retdec::common::Address & | globalAddress | ) | const |
[out] | globalAddress | If storage is global this is set to its address. Otherwise it is set to an undefined value. |
bool retdec::common::Storage::isRegister | ( | ) | const |
bool retdec::common::Storage::isRegister | ( | int & | registerNumber | ) | const |
[out] | registerNumber | If register number is set, return it in parameter. Otherwise parameter is left unchanged. |
true
. Otherwise return false
. bool retdec::common::Storage::isRegister | ( | std::string & | registerName | ) | const |
[out] | registerName | If storage is register this is set to its name. Otherwise it is set to an undefined value. If register number was set, but name was not, this may be empty even if storage is a register. |
bool retdec::common::Storage::isStack | ( | ) | const |
bool retdec::common::Storage::isStack | ( | int & | stackOffset | ) | const |
[out] | stackOffset | If storage is starck this is set to its offset. Otherwise it is set to an undefined value. |
bool retdec::common::Storage::isUndefined | ( | ) | const |
|
static |
|
static |
Create on stack storage associtated with the provided register number.
void retdec::common::Storage::setRegisterNumber | ( | unsigned | registerNumber | ) |
|
static |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
staticprotected |