クラス Onikiri::EmulatorUtility::OpEmulationState

#include <OpEmulationState.h>

Onikiri::EmulatorUtility::OpEmulationStateのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public メソッド

template<typename TOpInfo>
void ApplyEmulationState ()
template<typename TOpInfo>
void ApplyEmulationStateToRegArray (u64 *regArray)
u64 GetDst (int index)
OpInfoGetOpInfo ()
OpStateIFGetOpState ()
Onikiri::u64 GetPC () const
int GetPID () const
EmulatorUtility::ProcessStateGetProcessState ()
u64 GetSrc (int index)
bool GetTaken () const
Onikiri::u64 GetTakenPC () const
int GetTID () const
template<typename TOpInfo>
 OpEmulationState (Onikiri::OpStateIF *opState, TOpInfo *opInfo, EmulatorUtility::ProcessState *processState, PC pc, u64 takenAddr, u64 *regArray)
template<typename TOpInfo>
 OpEmulationState (Onikiri::OpStateIF *opState, TOpInfo *opInfo, EmulatorUtility::ProcessState *processState)
void SetDst (int index, u64 value)
void SetTaken (bool t)
void SetTakenPC (Onikiri::u64 pc)

構成

struct  RegFromOpState
struct  RegFromRegArray

説明

OpEmulationState.h45 行で定義されています。


コンストラクタとデストラクタ

template<typename TOpInfo>
Onikiri::EmulatorUtility::OpEmulationState::OpEmulationState ( Onikiri::OpStateIF opState,
TOpInfo *  opInfo,
EmulatorUtility::ProcessState processState 
) [inline]

OpEmulationState.h114 行で定義されています。

参照先 Onikiri::Addr::addressOnikiri::OpStateIF::GetPC()Onikiri::OpStateIF::GetTakenPC()Onikiri::LogicalData::pidOnikiri::LogicalData::tid.

00115                 : m_opState(opState), m_opInfo(opInfo), m_processState(processState)
00116             {
00117                 Addr addr = m_opState->GetTakenPC();
00118                 m_takenPC = addr.address;
00119                 m_taken = false;
00120                 m_pid = addr.pid;
00121                 m_tid = addr.tid;
00122 
00123                 m_PC = m_opState->GetPC().address;
00124 
00125                 InitOperands<TOpInfo, RegFromOpState>( RegFromOpState(opState) );
00126             }

関数の呼び出しグラフ:

template<typename TOpInfo>
Onikiri::EmulatorUtility::OpEmulationState::OpEmulationState ( Onikiri::OpStateIF opState,
TOpInfo *  opInfo,
EmulatorUtility::ProcessState processState,
PC  pc,
u64  takenAddr,
u64 regArray 
) [inline]

OpEmulationState.h131 行で定義されています。

参照先 Onikiri::Addr::addressOnikiri::LogicalData::pidOnikiri::LogicalData::tid.

00132                 : m_opState(opState), m_opInfo(opInfo), m_processState(processState)
00133             {
00134                 m_takenPC = pc.address+4;
00135                 m_taken = false;
00136                 m_pid = pc.pid;
00137                 m_tid = pc.tid;
00138 
00139                 m_PC = pc.address;
00140 
00141                 InitOperands<TOpInfo, RegFromRegArray<TOpInfo> >( RegFromRegArray<TOpInfo>(opInfo, regArray) );
00142             }


関数

template<typename TOpInfo>
void Onikiri::EmulatorUtility::OpEmulationState::ApplyEmulationState (  )  [inline]

OpEmulationState.h146 行で定義されています。

参照先 Onikiri::OpStateIF::SetDst()Onikiri::OpStateIF::SetTaken()Onikiri::OpStateIF::SetTakenPC().

参照元 Onikiri::EmulatorUtility::CommonEmulator< Traits >::Execute().

00147             {
00148                 TOpInfo* opInfo = static_cast<TOpInfo*>(m_opInfo);
00149                 m_opState->SetTaken(m_taken);
00150                 m_opState->SetTakenPC( Addr(m_pid, m_tid, m_takenPC) );
00151 
00152                 // opInfo] dst 
00153                 int dstRegNum = opInfo->GetDstRegNum();
00154                 for (int i = 0; i < dstRegNum; i ++) {
00155                     m_opState->SetDst( i, m_dst[ opInfo->GetDstRegOpMap(i) ]);
00156                 }
00157             }

関数の呼び出しグラフ:

Here is the caller graph for this function:

template<typename TOpInfo>
void Onikiri::EmulatorUtility::OpEmulationState::ApplyEmulationStateToRegArray ( u64 regArray  )  [inline]

OpEmulationState.h162 行で定義されています。

00163             {
00164                 TOpInfo* opInfo = static_cast<TOpInfo*>(m_opInfo);
00165 
00166                 // opInfo] dst 
00167                 int dstRegNum = opInfo->GetDstRegNum();
00168                 for (int i = 0; i < dstRegNum; i ++) {
00169                     regArray[ opInfo->GetDstReg(i) ] = m_dst[ opInfo->GetDstRegOpMap(i) ];
00170                 }
00171             }

u64 Onikiri::EmulatorUtility::OpEmulationState::GetDst ( int  index  )  [inline]

OpEmulationState.h181 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetDst().

00182             {
00183                 return m_dst[index];
00184             }

Here is the caller graph for this function:

OpInfo* Onikiri::EmulatorUtility::OpEmulationState::GetOpInfo (  )  [inline]

OpEmulationState.h225 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpInfoWrapper< TISAInfo >::EmulationFunctionProxy().

00226             {
00227                 return m_opInfo;
00228             }

Here is the caller graph for this function:

OpStateIF* Onikiri::EmulatorUtility::OpEmulationState::GetOpState (  )  [inline]

OpEmulationState.h221 行で定義されています。

参照元 Onikiri::EmulatorUtility::Operation::IntDiv< Type, TSrc1, TSrc2 >::operator()()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::Read()Onikiri::EmulatorUtility::Operation::ReadMemory()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::Write()Onikiri::EmulatorUtility::Operation::WriteMemory().

00222             {
00223                 return m_opState;
00224             }

Here is the caller graph for this function:

Onikiri::u64 Onikiri::EmulatorUtility::OpEmulationState::GetPC (  )  const [inline]

OpEmulationState.h196 行で定義されています。

参照元 Onikiri::EmulatorUtility::Operation::current_pc()Onikiri::PPC64Linux::PPC64LinuxSyscallConv::Execute()Onikiri::AlphaLinux::AlphaLinuxSyscallConv::Execute()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetPC()Onikiri::EmulatorUtility::Operation::next_pc().

00197             {
00198                 return m_PC;
00199             }

Here is the caller graph for this function:

int Onikiri::EmulatorUtility::OpEmulationState::GetPID (  )  const [inline]

OpEmulationState.h211 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetPC()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetTakenPC()Onikiri::EmulatorUtility::Operation::ReadMemory()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_exit()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_read()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_readv()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_write()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_writev()Onikiri::EmulatorUtility::Operation::WriteMemory().

00212             {
00213                 return m_pid;
00214             }

Here is the caller graph for this function:

EmulatorUtility::ProcessState* Onikiri::EmulatorUtility::OpEmulationState::GetProcessState (  )  [inline]

OpEmulationState.h229 行で定義されています。

参照元 Onikiri::AlphaLinux::Operation::AlphaPALRdUniq()Onikiri::AlphaLinux::Operation::AlphaPALWrUniq()Onikiri::AlphaLinux::Operation::AlphaSyscallCore()Onikiri::AlphaLinux::Operation::AlphaSyscallSetArg()Onikiri::PPC64Linux::Operation::PPC64SyscallCore()Onikiri::PPC64Linux::Operation::PPC64SyscallSetArg().

00230             {
00231                 return m_processState;
00232             }

Here is the caller graph for this function:

u64 Onikiri::EmulatorUtility::OpEmulationState::GetSrc ( int  index  )  [inline]

OpEmulationState.h177 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetSrc()Onikiri::EmulatorUtility::Operation::SrcOperand< OperandIndex >::operator()().

00178             {
00179                 return m_src[index];
00180             }

Here is the caller graph for this function:

bool Onikiri::EmulatorUtility::OpEmulationState::GetTaken (  )  const [inline]

OpEmulationState.h191 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetTaken().

00192             {
00193                 return m_taken;
00194             }

Here is the caller graph for this function:

Onikiri::u64 Onikiri::EmulatorUtility::OpEmulationState::GetTakenPC (  )  const [inline]

OpEmulationState.h206 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetTakenPC().

00207             {
00208                 return m_takenPC;
00209             }

Here is the caller graph for this function:

int Onikiri::EmulatorUtility::OpEmulationState::GetTID (  )  const [inline]

OpEmulationState.h216 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetPC()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::GetTakenPC()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_read()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_readv()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_write()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_writev().

00217             {
00218                 return m_tid;
00219             }

Here is the caller graph for this function:

void Onikiri::EmulatorUtility::OpEmulationState::SetDst ( int  index,
u64  value 
) [inline]

OpEmulationState.h173 行で定義されています。

参照元 Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::SetDst()Onikiri::EmulatorUtility::Operation::DstOperand< OperandIndex >::SetOperand().

00174             {
00175                 m_dst[index] = value;
00176             }

Here is the caller graph for this function:

void Onikiri::EmulatorUtility::OpEmulationState::SetTaken ( bool  t  )  [inline]

OpEmulationState.h187 行で定義されています。

参照元 Onikiri::EmulatorUtility::Operation::do_branch()Onikiri::PPC64Linux::PPC64LinuxSyscallConv::Execute()Onikiri::AlphaLinux::AlphaLinuxSyscallConv::Execute()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::SetTaken()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_exit().

00188             {
00189                 m_taken = t;
00190             }

Here is the caller graph for this function:

void Onikiri::EmulatorUtility::OpEmulationState::SetTakenPC ( Onikiri::u64  pc  )  [inline]

OpEmulationState.h201 行で定義されています。

参照元 Onikiri::EmulatorUtility::Operation::BranchAbsCond()Onikiri::EmulatorUtility::Operation::BranchAbsUncond()Onikiri::EmulatorUtility::Operation::BranchRelCond()Onikiri::EmulatorUtility::Operation::BranchRelUncond()Onikiri::PPC64Linux::PPC64LinuxSyscallConv::Execute()Onikiri::AlphaLinux::AlphaLinuxSyscallConv::Execute()Onikiri::PPC64Linux::Operation::PPC64BranchAbsCond()Onikiri::PPC64Linux::Operation::PPC64BranchAbsUncond()Onikiri::PPC64Linux::Operation::PPC64BranchRelCond()Onikiri::PPC64Linux::Operation::PPC64BranchRelUncond()Onikiri::EmulatorUtility::ExtraOpEmuStateWrapper< TISAInfo >::SetTakenPC()Onikiri::EmulatorUtility::Linux64SyscallConv::syscall_exit().

00202             {
00203                 m_takenPC = pc;
00204             }

Here is the caller graph for this function:


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:29:10 2013に生成されました。  doxygen 1.4.7