X86中的RDTSC指令

原创 2010年07月10日 11:29:00

IntelX86中的RDTSCRead Time Stamp Counter 读取时间计数器的指令。这个指令读取CPU时间计数器,返回一个无符号的64位整数。它通过EDX EAX寄存器返回CPU被引导后,时钟所走的圈数。这意味着,你可以用它来计算时间间隔了多久。但是,由于这个指令还未被VC++采用,于是如果想要使用它,则必须用_emit伪指令嵌入它的OPCODE  0x0f 0x31。 于是可以写出一个取得时间计数器的代码如下

不难想象,如果我们取两次,再求得两次的差值,则可以统计出时间间隔。若要将这个计数器转换到现实的时间,则只需要除以CPU的时钟频率即可。

 

上面的内容是《WINDOWS图形编程》上看到的,由于其历史久远,于是我在网上查了一下关于RDTSC指令,想看看他的发展前景,不料找到了一篇关于他的不好消息。

 《多核时代不宜再用 x86 RDTSC 指令测试指令周期和时间》 http://blog.csdn.net/Solstice/archive/2010/01/16/5196544.aspx 上面分析了几点原因,个人认为讲得比较好。

 

不过,出于好奇的心态,你完全可以无视上面的文章,而继续用上面写出的函数写一个“高精度”的Timer,的确,它是高精度的。 如果你想看看多核与单核的影响,最好写一个多线程的测试程序,然后通过控制每个线程的CPU亲缘性------即让它们全部在一个CPU上运行,或者让他们分发到不同的CPU上运行。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间

多核时代不宜再用 x86 的 RDTSC 指令测试指令周期和时间   陈硕 Blog.csdn.net/Solstice   自从 Intel Pentium 加入 RDTS...

x86汇编--(六)一些指令的小结

offset 取得标号出的地址 jmp short [] 对应机器指令没有包括目的地址,而是通过记录当前jmp指令结束位置到指定跳转位置的偏移地址,在编译程序的时候被算出 转移短指令:8位偏移最多向...

80X86学习笔记--数据传送指令

一.传送指令 格式:mov dst, src 源操作数可以使累加器,寄存器,存储单元,立即数。 目的操作数不能为立即数。 注意问题: 源和目的操作数不能同时是段寄存器;代...

80X86学习笔记--算术运算指令

一.加减运算指令 1.加法指令ADD 格式:ADD OPRD1, OPRD2 操作:OPRD1 加法指令影响标志位,OF位更具操作数符号变化情况来设置:若两个操作数符号相同而结...

x86汇编指令详解

参考一: 汇编指令 GAS中每个操作都是有一个字符的后缀,表明操作数的大小。 C声明 GAS后缀 大小(字节) char...

8086处理器的无条件转移指令——《x86汇编语言:从实模式到保护模式》读书笔记13

本博文是对原书8.3.10的内容的总结。 一、相对短转移 指令格式是: jmp short 标号 标号也可以替换成具体的数值(标号和数值是等价的),例如 jmp short 0...

X86 LSS指令详解

SDM指令功能描述(LSS) 总体描述: 用32位或48位或64位的数据加载16位SS段选择符和16或32位或64位的通用寄存器值,其中通用寄存器在目的操作数中。 LSS (16or32or64...

80x86的指令系统(二)

1、逻辑指令: 逻辑运算指令 AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR2、逻辑运算指令 逻辑非...

x86运算指令

x86指令详解运算指令乘法指令 有符号乘指令单操作数的有符号乘指令 格式: imul ops 功能:字节乘法 (al) * ops --> ax 字乘法 (ax) * (ops) -->...

X86指令内幕 —— 序

C 的经典入门例子:int main(){    printf("Hello, World/n");    return 0;} 下面来看看 x86/x64 指令 encode 的 2 个例子: 例子...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)