⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachedoc.cpp

📁 计算机体系结构中cache实现原理及解决方案的模拟程序.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// CacheDoc.cpp : implementation of the CCacheDoc class
//

#include "stdafx.h"
#include "afxdlgs.h"
#include "Cache.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "CacheDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCacheDoc

IMPLEMENT_DYNCREATE(CCacheDoc, CDocument)

BEGIN_MESSAGE_MAP(CCacheDoc, CDocument)
	//{{AFX_MSG_MAP(CCacheDoc)
	ON_COMMAND(ID_EDIT_DO, OnEditDo)
	ON_COMMAND(ID_Block_size_4, OnBlocksize4)
	ON_UPDATE_COMMAND_UI(ID_Block_size_4, OnUpdateBlocksize4)
	ON_COMMAND(ID_Block_size_8, OnBlocksize8)
	ON_UPDATE_COMMAND_UI(ID_Block_size_8, OnUpdateBlocksize8)
	ON_COMMAND(ID_Block_size_16, OnBlocksize16)
	ON_UPDATE_COMMAND_UI(ID_Block_size_16, OnUpdateBlocksize16)
	ON_COMMAND(ID_Block_size_32, OnBlocksize32)
	ON_UPDATE_COMMAND_UI(ID_Block_size_32, OnUpdateBlocksize32)
	ON_COMMAND(ID_Block_size_64, OnBlocksize64)
	ON_UPDATE_COMMAND_UI(ID_Block_size_64, OnUpdateBlocksize64)
	ON_COMMAND(ID_Set_Size_16, OnSetSize16)
	ON_UPDATE_COMMAND_UI(ID_Set_Size_16, OnUpdateSetSize16)
	ON_COMMAND(ID_Set_Size_32, OnSetSize32)
	ON_UPDATE_COMMAND_UI(ID_Set_Size_32, OnUpdateSetSize32)
	ON_COMMAND(ID_Set_Size_4, OnSetSize4)
	ON_UPDATE_COMMAND_UI(ID_Set_Size_4, OnUpdateSetSize4)
	ON_COMMAND(ID_Set_Size_64, OnSetSize64)
	ON_UPDATE_COMMAND_UI(ID_Set_Size_64, OnUpdateSetSize64)
	ON_COMMAND(ID_Set_Size_8, OnSetSize8)
	ON_UPDATE_COMMAND_UI(ID_Set_Size_8, OnUpdateSetSize8)
	ON_COMMAND(ID_Way_Size_16, OnWaySize16)
	ON_UPDATE_COMMAND_UI(ID_Way_Size_16, OnUpdateWaySize16)
	ON_COMMAND(ID_Way_Size_32, OnWaySize32)
	ON_UPDATE_COMMAND_UI(ID_Way_Size_32, OnUpdateWaySize32)
	ON_COMMAND(ID_Way_Size_4, OnWaySize4)
	ON_UPDATE_COMMAND_UI(ID_Way_Size_4, OnUpdateWaySize4)
	ON_COMMAND(ID_Way_Size_64, OnWaySize64)
	ON_UPDATE_COMMAND_UI(ID_Way_Size_64, OnUpdateWaySize64)
	ON_COMMAND(ID_Way_Size_8, OnWaySize8)
	ON_UPDATE_COMMAND_UI(ID_Way_Size_8, OnUpdateWaySize8)
	//ON_COMMAND(ID_Contunue, OnContunue)
	ON_UPDATE_COMMAND_UI(ID_EDIT_DO, OnUpdateEditDo)
	ON_UPDATE_COMMAND_UI(ID_Continu, OnUpdateContinu)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCacheDoc construction/destruction

CCacheDoc::CCacheDoc()
{
	// TODO: add one-time construction code here
	m_draw=false;
	m_select=0;
	m_way_select=0;
	m_set_select=0;
	m_dark=true;
	m_hit=0;
	I_count=-1;
	J_count=-1;
	Set_Num=0;
	Count=0;
	m_timeout=10000;
	Ins_pointer=-1;
	Ins_Set_Num=0;
	Ins_Count=0;
	m_hitnum=1.0;
	m_missnum=0.0;
	m_missrate=0.0;
	m_dark_begin=false;
	//m_status=false;

}

CCacheDoc::~CCacheDoc()
{
}
CInfor::CInfor()
{
	CBlock_Size=4;
	CSet_Size=4;
	CWay_Size=4;
	CCache_Size=CBlock_Size*CWay_Size*CWay_Size;
	CWorR='r';
	WBorWT=true;

}
CBlock::CBlock()
{
	dirty=0;
	tag=0;
	valid=0;
}

BOOL CCacheDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;
//	AfxMessageBox("11111111111111111111");
	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CCacheDoc serialization


void CCacheDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
		//ar>>Charname>>CAddress;
		

		//CString b;
		//b.Format("%c",this->Charname);
		//AfxMessageBox(b);
		//b.Format("%ld",CAddress);
		//AfxMessageBox(b);

	}
}

/////////////////////////////////////////////////////////////////////////////
// CCacheDoc diagnostics

#ifdef _DEBUG
void CCacheDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CCacheDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CCacheDoc commands

void CCacheDoc::OnEditDo() 
{
	a1();
}

void CCacheDoc::DrawAll()
{
//	CPaintDC dc(::AfxGetMainWnd()->m_hWnd);
//	dc.Rectangle(100,100,200,200);
}


void CCacheDoc::OnBlocksize4() 
{
	// TODO: Add your command handler code here
	m_select=0;
	NewBlock.CBlock_Size=4;
//	Invalidate();
	
}

void CCacheDoc::OnUpdateBlocksize4(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_select==0);
	pCmdUI->Enable(m_dark);
	
}

void CCacheDoc::OnBlocksize8() 
{
	// TODO: Add your command handler code here
	m_select=1;
	NewBlock.CBlock_Size=8;
	
	
//	Invalidate();
	
}

void CCacheDoc::OnUpdateBlocksize8(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		pCmdUI->SetCheck(m_select==1);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnBlocksize16() 
{
	// TODO: Add your command handler code here
	m_select=2;
	NewBlock.CBlock_Size=16;
	
}

void CCacheDoc::OnUpdateBlocksize16(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_select==2);
	pCmdUI->Enable(m_dark);

	
}

void CCacheDoc::OnBlocksize32() 
{
	// TODO: Add your command handler code here
	m_select=3;
	NewBlock.CBlock_Size=32;
	
}

void CCacheDoc::OnUpdateBlocksize32(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_select==3);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnBlocksize64() 
{
	// TODO: Add your command handler code here
	m_select=4;
	NewBlock.CBlock_Size=64;
	
}

void CCacheDoc::OnUpdateBlocksize64(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_select==4);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnSetSize16() 
{
	m_set_select=2;
	NewBlock.CSet_Size=16;
	
}

void CCacheDoc::OnUpdateSetSize16(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_set_select==2);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnSetSize32() 
{
	m_set_select=3;
	NewBlock.CSet_Size=32;
	
}

void CCacheDoc::OnUpdateSetSize32(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_set_select==3);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnSetSize4() 
{
	m_set_select=0;
	NewBlock.CSet_Size=4;
	
}

void CCacheDoc::OnUpdateSetSize4(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_set_select==0);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnSetSize64() 
{
	m_set_select=4;
	NewBlock.CSet_Size=64;
	
}

void CCacheDoc::OnUpdateSetSize64(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_set_select==4);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnSetSize8() 
{
	m_set_select=1;
	NewBlock.CSet_Size=8;
	
}

void CCacheDoc::OnUpdateSetSize8(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_set_select==1);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnWaySize16() 
{
	m_way_select=2;
	NewBlock.CWay_Size=16;
	
}

void CCacheDoc::OnUpdateWaySize16(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_way_select==2);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnWaySize32() 
{
	m_way_select=3;
	NewBlock.CWay_Size=32;
	
}

void CCacheDoc::OnUpdateWaySize32(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_way_select==3);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnWaySize4() 
{
	m_way_select=0;
	NewBlock.CWay_Size=4;
	
}

void CCacheDoc::OnUpdateWaySize4(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_way_select==0);
	pCmdUI->Enable(m_dark);
}

void CCacheDoc::OnWaySize64() 
{
	m_way_select=4;
	NewBlock.CWay_Size=64;
	
}

void CCacheDoc::OnUpdateWaySize64(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck(m_way_select==4);
	pCmdUI->Enable(m_dark);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -