我无法搞清楚这段代码。我们应该通过输入一个由空格分隔的两个数字来弄清楚如何不进入爆炸炸弹召唤来扩散这个炸弹。我自己发现了2位数的东西。我意识到问题的后半部分中的mov和jmps基本上是一个case语句,但我似乎无法摆脱它。我认为jmpq是整个问题的关键。似乎影响这段代码的唯一数字是我放入的第一个。第二个似乎根本没有影响它。我假设我使用jmpq跳过所有case语句并直接进入最后两个操作。如果我的第一个数字大于8,那么炸弹会爆炸,除此之外,另一个数字似乎在跳跃的地方有效,但我无法超过某一点。请帮助我了解此代码中发生了什么。
Dump of assembler code for function phase_3:
=> 0x0000000000400f53 <+0>: sub $0x18,%rsp
0x0000000000400f57 <+4>: lea 0x8(%rsp),%rcx
0x0000000000400f5c <+9>: lea 0xc(%rsp),%rdx
0x0000000000400f61 <+14>: mov $0x4027ad,%esi
0x0000000000400f66 <+19>: mov $0x0,%eax
0x0000000000400f6b <+24>: callq 0x400c30 <__isoc99_sscanf@plt>
0x0000000000400f70 <+29>: cmp $0x1,%eax
0x0000000000400f73 <+32>: jg 0x400f7a <phase_3+39>
0x0000000000400f75 <+34>: callq 0x40154f <explode_bomb>
0x0000000000400f7a <+39>: cmpl $0x7,0xc(%rsp)
0x0000000000400f7f <+44>: ja 0x400fbd <phase_3+106>
0x0000000000400f81 <+46>: mov 0xc(%rsp),%eax
0x0000000000400f85 <+50>: jmpq *0x4024e0(,%rax,8)
0x0000000000400f8c <+57>: mov $0x20d,%eax
0x0000000000400f91 <+62>: jmp 0x400fce <phase_3+123>
0x0000000000400f93 <+64>: mov $0x313,%eax
0x0000000000400f98 <+69>: jmp 0x400fce <phase_3+123>
0x0000000000400f9a <+71>: mov $0x37f,%eax
0x0000000000400f9f <+76>: jmp 0x400fce <phase_3+123>
0x0000000000400fa1 <+78>: mov $0x2dc,%eax
0x0000000000400fa6 <+83>: jmp 0x400fce <phase_3+123>
0x0000000000400fa8 <+85>: mov $0x125,%eax
---Type <return> to continue, or q <return> to quit---
0x0000000000400fad <+90>: jmp 0x400fce <phase_3+123>
0x0000000000400faf <+92>: mov $0x168,%eax
0x0000000000400fb4 <+97>: jmp 0x400fce <phase_3+123>
0x0000000000400fb6 <+99>: mov $0x2d9,%eax
0x0000000000400fbb <+104>: jmp 0x400fce <phase_3+123>
0x0000000000400fbd <+106>: callq 0x40154f <explode_bomb>
0x0000000000400fc2 <+111>: mov $0x0,%eax
0x0000000000400fc7 <+116>: jmp 0x400fce <phase_3+123>
0x0000000000400fc9 <+118>: mov $0x1cb,%eax
0x0000000000400fce <+123>: cmp 0x8(%rsp),%eax
0x0000000000400fd2 <+127>: je 0x400fd9 <phase_3+134>
0x0000000000400fd4 <+129>: callq 0x40154f <explode_bomb>
0x0000000000400fd9 <+134>: add $0x18,%rsp
0x0000000000400fdd <+138>: retq