#include <RegDepPredBase.h>
Onikiri::RegDepPredBaseに対する継承グラフ
Public メソッド | |
virtual void | Allocate (OpIterator op) |
virtual void | Commit (OpIterator op) |
virtual void | Flush (OpIterator op) |
RegDepPredBase () | |
virtual void | Resolve (OpIterator op) |
virtual | ~RegDepPredBase () |
RegDepPredBase.h の 44 行で定義されています。
RegDepPredBase::RegDepPredBase | ( | ) |
RegDepPredBase::~RegDepPredBase | ( | ) | [virtual] |
void RegDepPredBase::Allocate | ( | OpIterator | op | ) | [virtual] |
Onikiri::DepPredIFを実装しています。
RegDepPredBase.cpp の 68 行で定義されています。
参照先 Onikiri::RegDepPredIF::AllocateReg()・Onikiri::OpInfo::GetDstNum()・Onikiri::OpInfo::GetDstOperand().
00069 { 00070 OpInfo* opInfo = op->GetOpInfo(); 00071 int dstNum = opInfo->GetDstNum(); 00072 for(int i = 0; i < dstNum; ++i) { 00073 int operand = opInfo->GetDstOperand(i); 00074 00075 if( operand == -1 ) { 00076 continue; 00077 } 00078 00079 int phyRegNo = AllocateReg(op,operand); 00080 op->SetDstReg(i, phyRegNo); 00081 } 00082 }
関数の呼び出しグラフ:
void RegDepPredBase::Commit | ( | OpIterator | op | ) | [virtual] |
Onikiri::DepPredIFを実装しています。
RegDepPredBase.cpp の 85 行で定義されています。
参照先 Onikiri::OpInfo::GetDstNum()・Onikiri::OpInfo::GetDstOperand()・Onikiri::RegDepPredIF::ReleaseReg().
00086 { 00087 OpInfo* opInfo = op->GetOpInfo(); 00088 int dstNum = opInfo->GetDstNum(); 00089 for(int i = 0; i < dstNum; ++i) { 00090 int operand = opInfo->GetDstOperand(i); 00091 ReleaseReg(op, operand, op->GetDstReg(i)); 00092 } 00093 }
関数の呼び出しグラフ:
void RegDepPredBase::Flush | ( | OpIterator | op | ) | [virtual] |
Onikiri::DepPredIFを実装しています。
RegDepPredBase.cpp の 96 行で定義されています。
参照先 Onikiri::RegDepPredIF::DeallocateReg()・Onikiri::OpInfo::GetDstNum()・Onikiri::OpInfo::GetDstOperand()・Onikiri::OpStatus::OS_FETCH.
00097 { 00098 if( op->GetStatus() == OpStatus::OS_FETCH ){ 00099 return; 00100 } 00101 OpInfo* opInfo = op->GetOpInfo(); 00102 int dstNum = opInfo->GetDstNum(); 00103 for(int i = 0; i < dstNum; ++i) { 00104 int operand = opInfo->GetDstOperand(i); 00105 DeallocateReg(op, operand, op->GetDstReg(i)); 00106 } 00107 }
関数の呼び出しグラフ:
void RegDepPredBase::Resolve | ( | OpIterator | op | ) | [virtual] |
Onikiri::DepPredIFを実装しています。
RegDepPredBase.cpp の 50 行で定義されています。
参照先 Onikiri::OpInfo::GetSrcNum()・Onikiri::OpInfo::GetSrcOperand()・Onikiri::RegDepPredIF::ResolveReg().
00051 { 00052 OpInfo* opInfo = op->GetOpInfo(); 00053 int srcNum = opInfo->GetSrcNum(); 00054 for(int i = 0; i < srcNum; ++i) { 00055 int operand = opInfo->GetSrcOperand(i); 00056 00057 if( operand == -1 ) { 00058 continue; 00059 } 00060 00061 int phyRegNo = ResolveReg(operand); 00062 op->SetSrcReg(i, phyRegNo); 00063 } 00064 }
関数の呼び出しグラフ: