`
kmplayer
  • 浏览: 498574 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

返回一段程序经过的CPU周期数

阅读更多
1,实例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

static unsigned cyc_high=0;
static unsigned cyc_low=0;

//rstsc指令访问计数器,高32为保存在%edx,低32位保存在%ax
void access_counter( unsigned* hi, unsigned* lo )
{
    asm("rdtsc; movl %%edx,%0; movl %%eax,%1"
        :"=r" (*hi),"=r" (*lo)
        :
        : "%edx", "%eax");
}

void start_counter()
{
    access_counter( &cyc_high, &cyc_low );
}

double get_counter()
{
    unsigned ncyc_high,ncyc_low;
    unsigned high_num,low_num,borrow;
    double result;

    access_counter( &ncyc_high, &ncyc_low );
    low_num=ncyc_low-cyc_low;
    borrow=( low_num<0 );
    high_num=ncyc_high-cyc_high;
    result=(double)high_num*(1<<30)*4+low_num;
    if(result<0)
        fprintf(stderr,"Error: counter returns neg value: %.0f\n",result);
    return result;
}


double get_mhz(int sleeptime)
{
    double rate;
    start_counter();
    sleep(sleeptime);
    rate=get_counter()/(1e6*sleeptime);
    return rate;
}




int main()
{
    double mhz;
    mhz=get_mhz(3);
    printf("CPU Time Frequency: %.0f MHZ\n",mhz);

    start_counter();
    //测量代码段
    printf("%.0f",get_counter());
    return 0;
}

分享到:
评论

相关推荐

    三菱PLC基础学习教程

    对每个程序,CPU从第一条指令开始执行,按指令步序号做周期性的程序循环扫描,如果无跳转指令,则从第一条指令开始逐条执行用户程序,直至遇到结束符后又返回第一条指令,如此周而复始不断循环,每一个循环称为一个...

    微机课程设计

    经过7个时钟周期之后,CPU从FFFF0H处开始执行程序,一般这里都存放一条无条件转移指令,转移到系统程序的入口处。 4 非屏蔽中断有什么特点?可屏蔽中断有什么特点?分别用在什么场合? 答:一般从CPU的NMI端引入...

    cpu模型机课程设计.zip

    第二步是在内存中装入包括有全部指令系统的一段程序和有关数据,进一步可采用单指令方式或连续方式执行,以验证机器执行指令的正确性。 第三步是编写一段表演程序,令机器运行。 第四步是运行指导教师给出的验收程序...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    子程序 取路径目录, 文本型, 公开, 返回一个文件所在目录,如"C:\Program Files\WinRAR\WinRAR.exe",返回"C:\Program Files\WinRAR" .参数 路径, 文本型, , 如"C:\Program Files\WinRAR\WinRAR.exe" .子程序 取...

    三菱指导书

    CPU从第一条指令丌始执行程序,直到遇到结束符后又返回第一条,如此 周而复始不断循环。PLC的扫描过程分为内部处理、通信操作、程序输入 处理、程序执行、程序输出几个阶段。全过程扫描一次所需的时间称为扫描 周期...

    微原软件实验三:中断实验与编程

    借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。在中断服务程序中管理刷新时、分、秒。 输入文件名(如CLK)后清屏后显示:Current time is: xx:xx:xx (时分秒键盘输入) 打回车,时、...

    17春地大《计算机组成原理》在线作业二.doc

    在下述指令中,I为间接寻址,______指令包含的CPU周期数最多 A. CLA B. ADD 30 C. STA I 31 D. JMP 21 正确答案:C 13. 对计算机的软、硬件资源进行管理的是_______ A. 操作系统 B. 数据库管理系统 C. 语言处理系统...

    微型计算机基于8086cup数字时钟课程设计任务书1.doc

    " "2 设计方案论证 " "2.1一秒定时方案的选择 " "运用8253产生周期为2秒的方波,通过8255芯片的A、B、C口读取电平高低,判断电" "平变化,进而判断1秒延时是否已经到达,这种方法可以写成子程序,执行返回就 " ...

    易语言程序免安装版下载

    修改外部数据库在“表中记录数为零”时可能导致程序崩溃的BUG。 10. 修改扩展界面支持库一,修改“超级列表框.取标题()”不能返回长度大于256的包含汉字的文本。 11. 修改扩展界面支持库一,为“超级列表框.查找...

    单片机脉冲计数及显示课程设计.doc

    中断返回 四 程序存储器和数据存储器的单元分配 存储器是单片机的一个重要组成部分,每个存储单元对应一个地址,每个个单元共有1个 地址,用两位16进制数表示,即存储器的地址(00H~FFH)。存储器中每个存储单元可 ...

    单片机期末考试题目及答案详解

    11.执行以下程序段 MOV R0,#70H MOV A,R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A 后,实现的功能是 A.把立即数70H循环左移3次 B.把立即数70H×10 C.把70H单元的内容循环左移3次 D.把70H...

    c语言编写单片机技巧

    最近几年高频电路与数位电路共享相同电路板,构成所谓的混载电路系统似乎有增加的趋势,类似如此的设计经常会造成数位电路动作时,高频电路却发生动作不稳定等现象,其中原因之一是数位电路产生的噪讯,影响高频电路...

    单片机课程设计报告基于MCS-51单片机的时钟设计.doc

    我们采用的是共阳电路,一 位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间……,周而复始 。只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果。 为了增加和位选相连接的I/O口的驱动能力,...

    powerbuilder

    用法在一个打印作业中,应用程序能够最多同时定义8种字体。当应用程序需要使用更多的字体时,可以在使用了某个字体号输出内容后使用PrintDefineFont()函数将该字体号对应的字体更换为其它字体。 ----------------...

    大工春计算机组成原理在线作业.docx

    A:进行算术运算和逻辑运算 B:进行主存与CPU之间的数据传送 C:进行CPU和I/O设备之间的数据传送 D:改变程序执行顺序 正确答案: (单选题)2:用某一个寄存器中操作数且指令地址码给出的是该寄存器地址的寻址方式称为()...

    delphi 开发经验技巧宝典源码

    0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算...

    22春“计算机科学与技术”专业《计算机系统结构》在线作业含答案参考2.docx

    每一条机器指令由一段微指令编写的微程序来解释执行 C.每一条机器指令组成的程序可由一条微指令来执行 D.一条微指令由若干条机器指令组成 参考答案:B 8. 计算机系统要不定期进行故障统计分析。( ) A.错误 B.正确 ...

    大工19春《计算机组成原理》在线作业3参考答案.doc

    为了保证中断服务程序执行完毕以后,能正确返回到断点继续执行程序,必须进行现场 保存操作。 A.对 B.错 正确答案:A 4.电源故障中断属于硬件故障中断。 A.对 B.错 正确答案:A 5.算术操作溢出和校验错都属于外部事件...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

Global site tag (gtag.js) - Google Analytics