我正在研究二进制炸弹的修改版本,但我仍然坚持%rsi
的价值。它是否与第5行有关并将值移入rax
?
由于
Dump of assembler code for function phase_2:
=> 0x00000000004011c7 <+0>: sub $0x8,%rsp
0x00000000004011cb <+4>: cmp $0x3,%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 $0xffffffffffffffff,%rax
0x00000000004011dd <+22>: jmp 0x401214 <phase_2+77>
0x00000000004011df <+24>: not %rsi
...
答案 0 :(得分:1)
RSI包含函数的第二个参数。 (第一个参数在RDI中。)
对于符合System V ABI(Linux,OS X,一般大多数UNIX; Windows uses a different calling convention)的x86-64系统,函数的前六个整数和指针参数是RDI,RSI, RDX,RCX,R8和R9。浮点参数在XMM(SSE)寄存器中传递。