汇编代码中 %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) 寄存器中传递。
我正在研究二进制炸弹的修改版本,但我对 %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) 寄存器中传递。