#include <MemAccess.h>
Onikiri::MemAccessに対する継承グラフ
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.h の 44 行で定義されています。
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.h の 51 行で定義されています。
00052 { 00053 MAR_SUCCESS, 00054 MAR_READ_INVALID_ADDRESS, 00055 MAR_READ_NOT_READABLE, 00056 MAR_READ_UNALIGNED_ADDRESS, 00057 MAR_READ_INVALID_PARTIAL_READ, 00058 MAR_WRITE_INVALID_ADDRESS, 00059 MAR_WRITE_UNALIGNED_ADDRESS, 00060 MAR_WRITE_NOT_WRITABLE 00061 };
Onikiri::MemAccess::MemAccess | ( | ) | [inline] |
const std::string MemAccess::ToString | ( | ) | const |
MemAccess.cpp の 40 行で定義されています。
参照先 Onikiri::Addr::address・address・MAR_READ_INVALID_ADDRESS・MAR_READ_NOT_READABLE・MAR_READ_UNALIGNED_ADDRESS・MAR_WRITE_INVALID_ADDRESS・MAR_WRITE_NOT_WRITABLE・MAR_WRITE_UNALIGNED_ADDRESS・Onikiri::LogicalData::pid・result・sign・size・str・Onikiri::LogicalData::tid・value.
参照元 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:
MemAccess.h の 63 行で定義されています。
参照元 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().
MemAccess.h の 67 行で定義されています。
参照元 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().
MemAccess.h の 65 行で定義されています。
参照元 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().
MemAccess.h の 64 行で定義されています。
参照元 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().
MemAccess.h の 66 行で定義されています。
参照元 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().