汇编代码中 %rsi 的值

Value of %rsi in assembly code

我正在研究二进制炸弹的修改版本,但我对 %rsi 的值感到困惑。它与第 5 行和将值移动到 rax 有什么关系吗?

谢谢

Dump of assembler code for function phase_2:

=> 0x00000000004011c7 <+0>: sub    [=10=]x8,%rsp
0x00000000004011cb <+4>:    cmp    [=10=]x3,%rdi  //contains 3 values
0x00000000004011cf <+8>:    je     0x4011df <phase_2+24>  //check values if equal to three
0x00000000004011d1 <+10>:   callq  0x401bd7 <bomb_explosion>
0x00000000004011d6 <+15>:   mov    [=10=]xffffffffffffffff,%rax
0x00000000004011dd <+22>:   jmp    0x401214 <phase_2+77>
0x00000000004011df <+24>:   not    %rsi
...

RSI 包含函数的第二个参数。 (第一个参数在 RDI 中。)

对于符合 System V ABI 的 x86-64 系统(Linux、OS X,通常是大多数 UNIX;Windows uses a different calling convention),第一个函数的六个整数和指针参数位于 RDI、RSI、RDX、RCX、R8 和 R9 中。浮点参数在 XMM (SSE) 寄存器中传递。