性能指令数

性能指令数

所以我一直在玩 perf 和 assembly 我有以下程序:

.intel_syntax noprefix

.global _start
_start:
  mov cl, 2
  mov ebx, 0b101
  shr ebx, cl
  and bl, 1 
  je do_stuff

  do_stuff:
  mov eax, 1
  mov ebx, 0
  int 0x80

当我使用它时,perf -e instructions:u ./shift 它显示 9 条指令而不是 8 条,我找不到原因。有什么办法可以找出+1指令是哪个吗?

它是否只是其中一条程序指令,但并行运行然后CPU将其淘汰?如果是这样的话,如何观察它在较低级别上是如何工作的?

编译:as -msyntax=intel -mnaked-reg shift.s -o shift.o && ld shift.o -o shift

/proc/sys/kernel/perf_event_paranoid设置为-1

相关内容