RDTSC命令详解

RDTSC - 读取时间标签计数器

操作码

指令

说明

0F 31

RDTSC

将时间标签计数器读入 EDX:EAX

说明

将处理器的时间标签计数器的当前值加载到 EDX:EAX 寄存器。时间标签计数器包含在 64 位 MSR 中。MSR 的高 32 位加载到 EDX 寄存器,低 32 位加载到 EAX 寄存器。处理器每时钟周期递增时间标签计数器 MSR 一次,在处理器复位时将它重设为 0。

寄存器 CR4 中的时间标签禁用 (TSD) 标志限制 RDTSC 的使用。清除 TSD 标志时,RDTSC 指令可以在任何特权级别执行;设置此标志时,指令只能在特权级别 0 执行。在特权级别 0 执行时,时间标签计数器还可以使用 RDMSR 指令读取。

RDTSC 指令不是序列化指令。这样,在读取计数器之前,它没有必要等到前面的所有指令都已执行。类似地,在执行读取操作之前,后面的指令也可以开始执行。

此指令在“英特尔(R) 体系结构”的奔腾(R) 处理器中引入。

操作

IF (CR4.TSD TimeStampCounter;
ELSE (* CR4 is 1 and CPL is 1, 2, or 3 *)
#GP(0)
FI;

影响的标志

无。

保护模式异常

#GP(0) - 如果寄存器 CR4 中的 TSD 标志设置为 1,并且 CPL 大于 0。

实地址模式异常

#GP - 如果寄存器 CR4 中的 TSD 标志设置为 1。

虚 8086 模式异常

#GP(0) - 如果寄存器 CR4 中的 TSD 标志设置为 1。

 

 

 

==============================================================

如果系统的RDTSC被禁用,那么可以用下面的命令代替:

__asm _emit 0x0F
__asm _emit 0x31

 

 

 

安利一个卖榴莲的地方:https://item.taobao.com/item.htm?id=621622307728

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值