CPU的速度随温度和电压的变化而变化,如何随时查看CPU的速度?下面我们通过编程实现。在这个过程中,要用到汇编语言的知识。
第一步:生成一个基于对话框的工程CPUSpeed。其他选项我们可以都取其默认值。
第二步:在对话框上添加一个按钮,名称为"测试CPU速度",双击此按钮生成此按钮的处理函数,OnButton1。
第三步:在CPUSpeedDlg.cpp文件中定义类Ctime,在OnButton1中添加处理代码,最后文件CPUSpeedDlg.cpp变成如下:
// CPUSpeedDlg.cpp : implementation file // #include "stdafx.h" #include "CPUSpeed.h" #include "CPUSpeedDlg.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////// // CAboutDlg dialog used for App About inline unsigned __int64 theCycleCount(void) {
_asm _emit 0x0F _asm _emit 0x31
/// this causes a compiler warning as there is no return statement /// however the _emits return a __int64 value }
class CTimer { unsigned __int64 m_start;
public:
unsigned __int64 m_overhead;
CTimer(void) { m_overhead = 0; Start(); /// we get the start cycle m_overhead = Stop(); // then we get the stop cycle catching the overhead time }
void Start(void) { m_start = theCycleCount(); }
unsigned __int64 Stop(void) { /// with the stop cycle we remove the overhead's time return theCycleCount()-m_start-m_overhead; } };
void CCPUSpeedDlg::OnButton1() { // TODO: Add your control notification handler code here CString strRawClockFrequency; CTimer timer;
long tickslong; long tickslongextra; timer.Start(); Sleep(1000); unsigned cpuspeed100 = (unsigned)(timer.Stop()/10000);
tickslong = cpuspeed100/100; tickslongextra = cpuspeed100-(tickslong*100); strRawClockFrequency.Format("%d.%d MHZ estimate ", tickslong,tickslongextra ); AfxMessageBox("CPU速度为"+strRawClockFrequency); } class CAboutDlg : public CDialog { ……以下为编程环境生成时自动生成的代码。 |
好了,现在点击按钮"测试CPU速度"就可以弹出对话框告诉我们CPU的速度了。  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
|