我正在尝试使用 Ubuntu 12.04 分析 x86 汇编程序。我想使用 rdtsc 功能。问题是,根据评论,我应该得到 rdx 中的周期数,但是使用以下代码,我得到的数字太高:
SECTION .bss
SECTION .dat
SECTION .text
global main
main:
nop
cpuid
rdtsc
shl rdx, 32
or rdx, rax
mov r8, rdx
xor esi,esi
mov esi,19 ; instructions to be monitored
cpuid
rdtsc
shl rdx, 32
or rdx, rax
sub rdx, r8
在调试器中运行它,我在 sub 指令之后的寄存器上得到以下结果:
rax 0xd88102bc
rbx 0x0
rcx 0xf0
rdx 0x44f3914a0
rsi 0x13
rdi 0x1
rbp 0x0
rsp 0x7fffffffdf38
r8 0x11828947ee1c
我无法弄清楚为什么 rdx 中的周期数对于如此简单的指令来说如此之高。rcx 中的数字是否正确?是不是也太高了?
提前致谢