構造体 Onikiri::MemAccess

#include <MemAccess.h>

Onikiri::MemAccessに対する継承グラフ

Inheritance graph
[凡例]
Onikiri::MemAccessのコラボレーション図

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

Public 型

 MAR_READ_INVALID_ADDRESS
 MAR_READ_INVALID_PARTIAL_READ
 MAR_READ_NOT_READABLE
 MAR_READ_UNALIGNED_ADDRESS
 MAR_SUCCESS
 MAR_WRITE_INVALID_ADDRESS
 MAR_WRITE_NOT_WRITABLE
 MAR_WRITE_UNALIGNED_ADDRESS
enum  Result {
  MAR_SUCCESS, MAR_READ_INVALID_ADDRESS, MAR_READ_NOT_READABLE, MAR_READ_UNALIGNED_ADDRESS,
  MAR_READ_INVALID_PARTIAL_READ, MAR_WRITE_INVALID_ADDRESS, MAR_WRITE_UNALIGNED_ADDRESS, MAR_WRITE_NOT_WRITABLE
}

Public メソッド

 MemAccess ()
const std::string ToString () const

Public 変数

Addr address
Result result
bool sign
int size
u64 value

説明

MemAccess.h44 行で定義されています。


列挙型

enum Onikiri::MemAccess::Result

列挙型の値:
MAR_SUCCESS 
MAR_READ_INVALID_ADDRESS 
MAR_READ_NOT_READABLE 
MAR_READ_UNALIGNED_ADDRESS 
MAR_READ_INVALID_PARTIAL_READ 
MAR_WRITE_INVALID_ADDRESS 
MAR_WRITE_UNALIGNED_ADDRESS 
MAR_WRITE_NOT_WRITABLE 

MemAccess.h51 行で定義されています。


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

Onikiri::MemAccess::MemAccess (  )  [inline]

MemAccess.h69 行で定義されています。

00069                     : size(0), sign(false), value(0), result(MAR_SUCCESS)
00070         {}


関数

const std::string MemAccess::ToString (  )  const

MemAccess.cpp40 行で定義されています。

参照先 Onikiri::Addr::addressaddressMAR_READ_INVALID_ADDRESSMAR_READ_NOT_READABLEMAR_READ_UNALIGNED_ADDRESSMAR_WRITE_INVALID_ADDRESSMAR_WRITE_NOT_WRITABLEMAR_WRITE_UNALIGNED_ADDRESSOnikiri::LogicalData::pidresultsignsizestrOnikiri::LogicalData::tidvalue.

参照元 Onikiri::EmulationOp::Read()Onikiri::SkipOp::Read()Onikiri::PerfectMemDepPred::Resolve()Onikiri::EmulationOp::Write()Onikiri::SkipOp::Write().

00041 {
00042     // Convert the value to a string depending on its size.
00043     String strValue;
00044     for( int i = 0; i < 8; i++ ){
00045         if( i < size ){
00046             strValue = String().format( "%02x", (( value >> (i*8) ) & 0xff) ) + strValue;
00047         }
00048     }
00049     
00050     String str;
00051     str.format(
00052         "pid:%d tid:%d address:%08x%08x value:%s size:%d(%s)\n",
00053         address.pid,
00054         address.tid,
00055         (u32)(address.address >> 32), 
00056         (u32)(address.address & 0xffffffff),
00057         strValue.c_str(),
00058         size,
00059         sign ? "signed" : "unsigned"
00060     );  
00061     
00062     switch( result ){
00063     default:
00064         str += "The memory access is successful.";
00065         break;
00066     case MemAccess::MAR_READ_INVALID_ADDRESS:
00067         str += "MAR_READ_INVALID_ADDRESS: The memory was not assigned and could not be read.";
00068         break;
00069     case MemAccess::MAR_READ_NOT_READABLE:
00070         str += "MAR_READ_NOT_READABLE: The memory could not be read.";
00071         break;
00072     case MemAccess::MAR_READ_UNALIGNED_ADDRESS:
00073         str += "MAR_READ_UNALIGNED_ADDRESS: An misaligned read access occurs.";
00074         break;
00075     case MemAccess::MAR_WRITE_INVALID_ADDRESS:
00076         str += "MAR_WRITE_INVALID_ADDRESS: The memory was not assigned and could not be written.";
00077         break;
00078     case MemAccess::MAR_WRITE_UNALIGNED_ADDRESS:
00079         str += "MAR_WRITE_UNALIGNED_ADDRESS: An misaligned write access occurs.";
00080         break;
00081     case MemAccess::MAR_WRITE_NOT_WRITABLE:
00082         str += "MAR_WRITE_NOT_WRITABLE: The memory could not be written.";
00083         break;
00084     }
00085 
00086     return str;
00087 }

Here is the caller graph for this function:


変数

Addr Onikiri::MemAccess::address

MemAccess.h63 行で定義されています。

参照元 Onikiri::PrefetcherBase::AccessFinished()Onikiri::Cache::AccessFinished()Onikiri::CacheMissedAccessList::Add()Onikiri::StreamPrefetcher::AllocateStream()Onikiri::EmulationDebugOp::EmulationDebugOp()Onikiri::Fetcher::GetICacheReadLatency()Onikiri::ForwardEmulator::GetProducerStore()Onikiri::MemOrderManager::GetProducerStore()Onikiri::Op::Initialize()Onikiri::MemOrderOperations::IsInnerAccess()Onikiri::MemOrderOperations::IsOverlapped()Onikiri::MemOrderOperations::IsOverlappedInAligned()Onikiri::MemOrderOperations::MergePartialAccess()Onikiri::StreamPrefetcher::OnCacheAccess()Onikiri::SamplePrefetcher::OnCacheAccess()Onikiri::PrefetcherBase::OnCacheRead()Onikiri::PrefetcherBase::OnCacheTableUpdate()Onikiri::Cache::OnReadHit()Onikiri::PrefetcherBase::Prefetch()Onikiri::ForwardEmulator::Read()Onikiri::EmulationOp::Read()Onikiri::Op::Read()Onikiri::Cache::Read()Onikiri::EmulatorUtility::CommonEmulator< Traits >::Read()Onikiri::Cache::ReadBody()Onikiri::EmulatorUtility::VirtualMemory::ReadMemory()Onikiri::EmulatorUtility::Operation::ReadMemory()Onikiri::MemOrderOperations::ReadPreviousAccess()Onikiri::Op::ToString()ToString()Onikiri::StreamPrefetcher::UpdateMonitorStream()Onikiri::Cache::UpdateTableBody()Onikiri::StreamPrefetcher::UpdateTrainingStream()Onikiri::ForwardEmulator::Write()Onikiri::EmulationOp::Write()Onikiri::Op::Write()Onikiri::Cache::Write()Onikiri::EmulatorUtility::CommonEmulator< Traits >::Write()Onikiri::Cache::WriteBody()Onikiri::EmulatorUtility::VirtualMemory::WriteMemory()Onikiri::EmulatorUtility::Operation::WriteMemory().

Result Onikiri::MemAccess::result

MemAccess.h67 行で定義されています。

参照元 Onikiri::EmulationDebugOp::EmulationDebugOp()Onikiri::EmulationOp::Read()Onikiri::MemOrderManager::Read()Onikiri::SkipOp::Read()Onikiri::EmulatorUtility::VirtualMemory::ReadMemory()ToString()Onikiri::EmulationOp::Write()Onikiri::SkipOp::Write()Onikiri::EmulatorUtility::VirtualMemory::WriteMemory().

bool Onikiri::MemAccess::sign

MemAccess.h65 行で定義されています。

参照元 Onikiri::EmulationDebugOp::EmulationDebugOp()Onikiri::EmulatorUtility::EmuMemAccess::EmuMemAccess()Onikiri::Op::Initialize()Onikiri::MemOrderOperations::MergePartialAccess()Onikiri::EmulatorUtility::VirtualMemory::ReadMemory()Onikiri::EmulatorUtility::Operation::ReadMemory()Onikiri::Op::ToString()ToString()Onikiri::EmulatorUtility::Operation::WriteMemory().

int Onikiri::MemAccess::size

MemAccess.h64 行で定義されています。

参照元 Onikiri::EmulationDebugOp::EmulationDebugOp()Onikiri::Op::Initialize()Onikiri::MemOrderOperations::IsInnerAccess()Onikiri::MemOrderOperations::IsOverlapped()Onikiri::MemOrderOperations::IsOverlappedInAligned()Onikiri::MemOrderOperations::MergePartialAccess()Onikiri::EmulatorUtility::VirtualMemory::ReadMemory()Onikiri::EmulatorUtility::Operation::ReadMemory()Onikiri::MemOrderOperations::ReadPreviousAccess()Onikiri::Op::ToString()ToString()Onikiri::EmulatorUtility::VirtualMemory::WriteMemory()Onikiri::EmulatorUtility::Operation::WriteMemory().

u64 Onikiri::MemAccess::value

MemAccess.h66 行で定義されています。

参照元 Onikiri::EmulationDebugOp::EmulationDebugOp()Onikiri::Op::Initialize()Onikiri::MemOrderOperations::MergePartialAccess()Onikiri::ForwardEmulator::Read()Onikiri::MemOrderManager::Read()Onikiri::EmulatorUtility::VirtualMemory::ReadMemory()Onikiri::EmulatorUtility::Operation::ReadMemory()Onikiri::MemOrderOperations::ReadPreviousAccess()Onikiri::EmulatorUtility::StrCpyToHost()Onikiri::EmulatorUtility::TargetStrlen()Onikiri::Op::ToString()ToString()Onikiri::Cache::UpdateTableBody()Onikiri::EmulatorUtility::VirtualMemory::WriteMemory()Onikiri::EmulatorUtility::Operation::WriteMemory().


この構造体の説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:03:31 2013に生成されました。  doxygen 1.4.7