📄 statdlg.cpp
字号:
// StatDlg.cpp : implementation file
//
#include "stdafx.h"
#include "pipeline.h"
#include "StatDlg.h"
#include "MIPSSimulator.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CStatDlg dialog
CStatDlg::CStatDlg(CWnd* pParent /*=NULL*/)
: CDialog(CStatDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CStatDlg)
//}}AFX_DATA_INIT
}
void CStatDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CStatDlg)
//}}AFX_DATA_MAP
DDX_GridControl(pDX, IDC_STAT, m_GridCtrl);
}
BEGIN_MESSAGE_MAP(CStatDlg, CDialog)
//{{AFX_MSG_MAP(CStatDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CStatDlg message handlers
BOOL CStatDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UINT COUNT[18];
CString LABEL_MAP[] = {
"", "LW", "SW", "ADD", "SUB", "MUL", "DIV", "AND", "OR", "XOR",
"BEQZ", "BNEZ", "J", "JR", "", "TYPE R", "TYPE I", "TYPE J"
};
COUNT[1] = simulator.STAT.nLW;
COUNT[2] = simulator.STAT.nSW;
COUNT[3] = simulator.STAT.nADD + simulator.STAT.nADDI;
COUNT[4] = simulator.STAT.nSUB + simulator.STAT.nSUBI;
COUNT[5] = simulator.STAT.nMUL + simulator.STAT.nMUT + simulator.STAT.nMULI + simulator.STAT.nMUTI;
COUNT[6] = simulator.STAT.nDIV + simulator.STAT.nDIVI;
COUNT[7] = simulator.STAT.nAND + simulator.STAT.nANDI;
COUNT[8] = simulator.STAT.nOR + simulator.STAT.nORI;
COUNT[9] = simulator.STAT.nXOR + simulator.STAT.nXORI;
COUNT[10] = simulator.STAT.nBEQZ;
COUNT[11] = simulator.STAT.nBNEZ;
COUNT[12] = simulator.STAT.nJ;
COUNT[13] = simulator.STAT.nJR;
COUNT[15] = simulator.STAT.nADD + simulator.STAT.nSUB + simulator.STAT.nMUL +
simulator.STAT.nMUT + simulator.STAT.nDIV + simulator.STAT.nAND +
simulator.STAT.nOR + simulator.STAT.nXOR;
COUNT[16] = simulator.STAT.nLW + simulator.STAT.nSW + simulator.STAT.nADDI +
simulator.STAT.nSUBI + simulator.STAT.nMULI + simulator.STAT.nMUTI +
simulator.STAT.nDIVI + simulator.STAT.nANDI + simulator.STAT.nORI +
simulator.STAT.nXORI + simulator.STAT.nBEQZ + simulator.STAT.nBNEZ +
simulator.STAT.nJR;
COUNT[17] = simulator.STAT.nJ;
COUNT[0] = COUNT[15] + COUNT[16] + COUNT[17];
if( COUNT[0] <= 0 ) COUNT[0] = 1;
m_GridCtrl.SetRowCount( 18);
m_GridCtrl.SetFixedRowCount( 1 );
m_GridCtrl.SetColumnCount( 3 );
m_GridCtrl.SetFixedColumnCount( 1 );
m_GridCtrl.SetRowResize( FALSE );
m_GridCtrl.SetColumnResize( FALSE );
m_GridCtrl.SetEditable( FALSE );
GV_ITEM Item;
Item.mask = GVIF_TEXT|GVIF_FORMAT;
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
Item.row = 0;
Item.col = 0;
Item.szText = _T(" ");
m_GridCtrl.SetItem( &Item );
Item.col = 1;
Item.szText = _T(" Counts ");
m_GridCtrl.SetItem( &Item );
Item.col = 2;
Item.szText = _T("Percentage");
m_GridCtrl.SetItem( &Item );
for( int row = 1; row < m_GridCtrl.GetRowCount(); row++ ) {
Item.row = row;
if( row == 14 ) {
Item.col = 0;
Item.nFormat = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
Item.szText = _T("TYPES");
m_GridCtrl.SetItem( &Item );
continue;
}
for( int col = 0; col < m_GridCtrl.GetColumnCount(); col++ ) {
Item.col = col;
if( col == 0 ) {
Item.nFormat = DT_RIGHT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
Item.szText = LABEL_MAP[row];
} else {
Item.nFormat = DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS;
if( col == 1 )
Item.szText.Format( "%d", COUNT[row] );
else {
Item.szText.Format( "%4.2f", (float)COUNT[row]/COUNT[0] );
Item.szText += "%";
}
}
m_GridCtrl.SetItem( &Item );
}
}
for( int col = 0; col < m_GridCtrl.GetColumnCount(); col++ ) {
m_GridCtrl.SetItemBkColour( 14, col, RGB(236,233,216) );
m_GridCtrl.SetItemBkColour( 15, col, RGB(217,233,192) );
m_GridCtrl.SetItemBkColour( 16, col, RGB(217,233,192) );
m_GridCtrl.SetItemBkColour( 17, col, RGB(217,233,192) );
}
m_GridCtrl.AutoSize();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -