クラス Onikiri::RegisterFile

#include <RegisterFile.h>

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

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

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

Public メソッド

 BEGIN_PARAM_MAP (GetParamPath()) RegisterFile()
int GetCapacity (int segment) const
PhyRegGetPhyReg (int phyRegNo) const
size_t GetSegmentCount () const
int GetTotalCapacity () const
void Initialize (InitPhase phase)
PhyRegoperator[] (int phyRegNo) const
void SetPhyReg (int phyRegNo, PhyReg *phyReg)
virtual ~RegisterFile ()

説明

RegisterFile.h43 行で定義されています。


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

RegisterFile::~RegisterFile (  )  [virtual]

RegisterFile.cpp50 行で定義されています。

参照先 Onikiri::PhysicalResourceNode::ReleaseParam().

00051 {
00052     for (int i = 0; i < m_totalCapacity; i++) {
00053         delete m_register[i];
00054     }
00055     ReleaseParam();
00056 }

関数の呼び出しグラフ:


関数

Onikiri::RegisterFile::BEGIN_PARAM_MAP ( GetParamPath()   ) 

int RegisterFile::GetCapacity ( int  segment  )  const

RegisterFile.cpp122 行で定義されています。

参照先 ASSERT.

00123 {
00124     ASSERT(segment >= 0 && segment < static_cast<int>(m_capacity.size()),
00125         "unknown segment %d", segment);     
00126     return m_capacity[segment];
00127 }

PhyReg * RegisterFile::GetPhyReg ( int  phyRegNo  )  const

RegisterFile.cpp98 行で定義されています。

参照先 ASSERT.

参照元 Onikiri::Op::GetPhyReg()operator[]()Onikiri::InorderSystem::Run()Onikiri::SystemManager::SetSimulationContext().

00099 {
00100     ASSERT(phyRegNo >= 0 && phyRegNo < m_totalCapacity,
00101         "illegal phyRegNo %d.", phyRegNo);
00102     return m_register[phyRegNo];
00103 }

Here is the caller graph for this function:

size_t RegisterFile::GetSegmentCount (  )  const

RegisterFile.cpp117 行で定義されています。

00118 {
00119     return m_capacity.size();
00120 }

int RegisterFile::GetTotalCapacity (  )  const

RegisterFile.cpp129 行で定義されています。

参照元 Onikiri::RMT::Initialize()Onikiri::SystemManager::SetSimulationContext().

00130 {
00131     return m_totalCapacity; 
00132 }

Here is the caller graph for this function:

void RegisterFile::Initialize ( InitPhase  phase  ) 

RegisterFile.cpp58 行で定義されています。

参照先 Onikiri::PhysicalResourceNode::CheckNodeInitialized()Onikiri::EmulatorIF::GetISAInfo()Onikiri::Core::GetNumScheduler()Onikiri::ISAInfoIF::GetRegisterSegmentCount()Onikiri::PhysicalResourceNode::INIT_POST_CONNECTIONOnikiri::PhysicalResourceNode::INIT_PRE_CONNECTIONOnikiri::ParamExchange::LoadParam()THROW_RUNTIME_ERROR.

00059 {
00060     if(phase == INIT_PRE_CONNECTION){
00061         LoadParam();
00062     }
00063     else if(phase == INIT_POST_CONNECTION){
00064         // member `FbN
00065         CheckNodeInitialized( "core", m_core );
00066         CheckNodeInitialized( "emulator", m_emulator );
00067 
00068         // Check the physical register configuration.
00069         ISAInfoIF* isaInfo = m_emulator->GetISAInfo();
00070         if( (size_t)isaInfo->GetRegisterSegmentCount() != m_capacity.size() ){
00071             THROW_RUNTIME_ERROR(
00072                 "The specified number of the physical register segments (%d) "
00073                 "and that of the logical register segments defined by the ISA (%d) "
00074                 "do not match in the configuration XML. Check the configuration "
00075                 "of the physical registers and the ISA.",
00076                 m_capacity.size(),
00077                 isaInfo->GetRegisterSegmentCount()
00078             );
00079         }
00080 
00081         // SWX^KvvZ
00082         m_totalCapacity = 0;
00083         for(int i = 0; i < static_cast<int>(m_capacity.size()); ++i) {
00084             m_totalCapacity += m_capacity[i];
00085         }
00086         
00087         // WX^m
00088         int schedulerCount = m_core->GetNumScheduler();
00089         m_register.resize(m_totalCapacity, 0);
00090         for (int i = 0; i < m_totalCapacity; i++) {
00091             PhyReg* reg = new PhyReg(schedulerCount, i);
00092             reg->Clear();
00093             m_register[i] = reg;
00094         }
00095     }
00096 }

関数の呼び出しグラフ:

PhyReg * RegisterFile::operator[] ( int  phyRegNo  )  const

RegisterFile.cpp105 行で定義されています。

参照先 GetPhyReg().

00106 {
00107     return GetPhyReg(phyRegNo);
00108 }

関数の呼び出しグラフ:

void RegisterFile::SetPhyReg ( int  phyRegNo,
PhyReg phyReg 
)

RegisterFile.cpp110 行で定義されています。

参照先 ASSERT.

00111 {
00112     ASSERT(phyRegNo >= 0 && phyRegNo < m_totalCapacity,
00113         "illegal phyRegNo %d.", phyRegNo);
00114     m_register[phyRegNo] = phyReg;
00115 }


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