如何在汇编中找到for循环中的起始值?

Big*_*boy 3 c assembly converter

我无法理解下面的汇编代码,因为我将它转换为C.我知道它是一个循环,但我不知道从哪里开始转换它.

我有点理解输入必须是6个数字,而在循环内部它将增加5并进行比较.

我大多坚持我们如何知道起始值?

   0x0000000000400f15 <+9>:     callq  0x4016e5 <read_six_numbers>
   0x0000000000400f1a <+14>:    lea    0x4(%rsp),%rbx
   0x0000000000400f1f <+19>:    lea    0x18(%rsp),%rbp
   0x0000000000400f24 <+24>:    mov    -0x4(%rbx),%eax
   0x0000000000400f27 <+27>:    add    $0x5,%eax
   0x0000000000400f2a <+30>:    cmp    %eax,(%rbx)
   0x0000000000400f2c <+32>:    je     0x400f33 <phase_2+39>
   0x0000000000400f2e <+34>:    callq  0x4016c3 <explode_bomb>
   0x0000000000400f33 <+39>:    add    $0x4,%rbx
   0x0000000000400f37 <+43>:    cmp    %rbp,%rbx
   0x0000000000400f3a <+46>:    jne    0x400f24 <phase_2+24>
Run Code Online (Sandbox Code Playgroud)

chq*_*lie 5

函数read_six_numbers接收数组的地址,将数字存储在寄存器中%rsi. %rsi设置为指向stack(%rsp)底部的位置,其中分配了一些空间sub $0x28,%rsp.循环0x400f24使用寄存器%rbx作为指向数组的指针,从头开始.它检查前一个值+ 5是否等于当前值.如果没有,它调用explode_bomb()没有参数.循环迭代5次,直到指针指向数组的末尾.