问题标签 [rdtsc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 在汇编中使用 rdtsc 函数
我正在尝试使用 Ubuntu 12.04 分析 x86 汇编程序。我想使用 rdtsc 功能。问题是,根据评论,我应该得到 rdx 中的周期数,但是使用以下代码,我得到的数字太高:
在调试器中运行它,我在 sub 指令之后的寄存器上得到以下结果:
我无法弄清楚为什么 rdx 中的周期数对于如此简单的指令来说如此之高。rcx 中的数字是否正确?是不是也太高了?
提前致谢
assembly - 如何计算 rdtsc 指令执行需要多少个时钟周期?
我知道 unsigned long long 存储在 eax/edx 中,但我想知道如何找出执行单个 rdtsc 指令需要多少个时钟周期?
编辑:这样的东西有用吗?
.globl rdtsc
rdtsc:
rdtsc
movl %eax, %ecx
movl %edx, %ebx
rdtsc
subl %ecx, %eax
subl %ebx, %edx
ret
c - 未定义对 rdtsc 的引用
我正在编写创建树的代码和不同的创建树的方法。不过,我似乎无法让 rdtsc 正常运行。
这是我的代码:
假设上面列出的所有函数都得到了处理(当然,除了 rdtsc)。
当我尝试编译时,我收到此错误:
任何想法为什么我会收到这个未定义的参考错误?
c++ - 如何从 C++ 获取 x86_64 中的 CPU 周期数?
我在 SO 上看到了这篇文章,其中包含用于获取最新 CPU 周期计数的 C 代码:
C/C++ Linux x86_64 中基于 CPU 周期计数的分析
有没有办法可以在 C++ 中使用此代码(欢迎使用 Windows 和 linux 解决方案)?虽然用 C 编写(并且 C 是 C++ 的子集),但我不太确定这段代码是否可以在 C++ 项目中工作,如果不能,如何翻译它?
我正在使用 x86-64
编辑2:
找到了这个函数,但是VS2010无法识别汇编程序。我需要包括任何东西吗?uint64_t
(我相信我必须换成long long
Windows ......?)
编辑3:
从上面的代码我得到错误:
“错误 C2400:‘操作码’中的内联汇编语法错误;找到‘数据类型’”
有人可以帮忙吗?
c - 组装 rdtsc x64 ubuntu
我正在尝试使用 rdtsc 函数,但我有奇怪的数字。我正在尝试从 C 代码调用此函数并将刻度传回函数。你能告诉我我做得对吗?
汇编代码:
C代码:
c - Why should I use 'rdtsc' differently on x86 and x86_x64?
I know that rdtsc
loads the current value of the processor's time-stamp counter into the two registers: EDX and EAX. In order to get it on x86 I need to do it like that (assuming using Linux):
and for x86_x64:
why is that? Can anybody explain it to me?
c - rdtsc() 给出奇怪的结果
我编写了一个非常简单的 C 程序,试图理解 C (Linux) 中的 rdtsc。该程序如下所示。
我的处理器配置如下。
从输出看,处理器的频率是 1.2GHz,据我了解,这意味着每秒会有 1200 x 10^6 滴答声。
当我在我的机器上运行上述程序时,它的输出始终是 88。令人惊讶的是,即使我删除了 'c = (a + b)*11000;' 在两个刻度之间,输出仍然是 88。
1)为什么输出没有增加。(根据执行上述语句所用的周期,它应该显示略高。)
2) 除了 CPU MHz 之外,上面 cpuinfo 中列出的任何其他参数是否会影响这一点。
c - 读取显示奇怪值的时间戳计数器
我有以下 C 文件 rdtsc.c 演示了在 CI 中使用 rdtsc() 对 64 位版本和 32 位版本都有条件编译。
我从 shell 循环运行上述程序,如下所示。
我得到的输出如下。
由于正在执行相同的操作。我当然希望这些值更接近于 urniform。我如何解释值中的这种差异?
c - rdtsc 代码显示内存特性(例如 TLB 未命中)对性能的影响
我试图理解 rdtsc() 并且我从http://www.mcs.anl.gov/~kazutomo/rdtsc.html发现了以下代码。解释代码的文本显示为“下一个简短的基准代码可能会向您展示内存特性对性能的一些影响,例如 TLB 未命中、页面错误或页面换入/换出。”。问题是我真的不明白这是如何从内存特性显示性能的。老实说,我不知道。它如果有人能稍微解释一下,那就太好了。