使用cmpq和je时无限循环

Dut*_*man 3 assembly x86-64 cmp decrement

我在每次迭代时递减RAX.如果RAX为零,程序应该改变流程.

# AT&T syntax
start_calc_factorial:
  decq %rax
  cmpq $0, %rax
  je quit_calc_factorial
  mulq %rcx
  jmp start_calc_factorial
Run Code Online (Sandbox Code Playgroud)

但是,该程序永远不会终止.调试器告诉我RAX的值为0xa0257c7238581842(它可能是下溢的,但它不应该因为je指令).RAX的初始值为7.

可能是什么问题呢?

Mar*_*ins 6

我相信乘法的结果存储在RAX寄存器中,所以这肯定会搞乱循环.