我无法确定输入所需的位数。当我单步执行代码时,我可以找到9个节点,但我仍然无法找出格式。总的来说,真正发生了什么。我可以看到它正在循环并检查每个节点,但我无法分辨它与它的比较,因为它并不仅仅出现在节点本身。
00000000004010dd <phase_6>:
4010dd: 53 push %rbx
4010de: ba 0a 00 00 00 mov $0xa,%edx
4010e3: be 00 00 00 00 mov $0x0,%esi
4010e8: e8 f3 fa ff ff callq 400be0 <strtol@plt>
4010ed: 48 89 c3 mov %rax,%rbx
4010f0: bf 20 33 60 00 mov $0x603320,%edi
4010f5: e8 7b ff ff ff callq 401075 <fun6>
4010fa: ba 08 00 00 00 mov $0x8,%edx
4010ff: 48 8b 40 08 mov 0x8(%rax),%rax
401103: 83 ea 01 sub $0x1,%edx
401106: 75 f7 jne 4010ff <phase_6+0x22>
401108: 39 18 cmp %ebx,(%rax)
40110a: 74 05 je 401111 <phase_6+0x34>
40110c: e8 fa 04 00 00 callq 40160b <explode_bomb>
401111: 5b pop %rbx
401112: c3 retq
0000000000401075 <fun6>:
401075: 48 89 f8 mov %rdi,%rax
401078: 4c 8b 47 08 mov 0x8(%rdi),%r8
40107c: 48 c7 47 08 00 00 00 movq $0x0,0x8(%rdi)
401083: 00
401084: 48 89 fa mov %rdi,%rdx
401087: 4d 85 c0 test %r8,%r8
40108a: 75 38 jne 4010c4 <fun6+0x4f>
40108c: f3 c3 repz retq
40108e: 48 89 d1 mov %rdx,%rcx
401091: 48 8b 51 08 mov 0x8(%rcx),%rdx
401095: 48 85 d2 test %rdx,%rdx
401098: 74 09 je 4010a3 <fun6+0x2e>
40109a: 39 32 cmp %esi,(%rdx)
40109c: 7f f0 jg 40108e <fun6+0x19>
40109e: eb 03 jmp 4010a3 <fun6+0x2e>
4010a0: 48 89 c1 mov %rax,%rcx
4010a3: 48 39 d1 cmp %rdx,%rcx
4010a6: 74 06 je 4010ae <fun6+0x39>
4010a8: 4c 89 41 08 mov %r8,0x8(%rcx)
4010ac: eb 03 jmp 4010b1 <fun6+0x3c>
4010ae: 4c 89 c0 mov %r8,%rax
4010b1: 49 8b 48 08 mov 0x8(%r8),%rcx
4010b5: 49 89 50 08 mov %rdx,0x8(%r8)
4010b9: 48 85 c9 test %rcx,%rcx
4010bc: 74 1d je 4010db <fun6+0x66>
4010be: 49 89 c8 mov %rcx,%r8
4010c1: 48 89 c2 mov %rax,%rdx
4010c4: 48 85 d2 test %rdx,%rdx
4010c7: 74 d7 je 4010a0 <fun6+0x2b>
4010c9: 41 8b 30 mov (%r8),%esi
4010cc: 48 89 c1 mov %rax,%rcx
4010cf: 39 32 cmp %esi,(%rdx)
4010d1: 7f be jg 401091 <fun6+0x1c>
4010d3: 48 89 c2 mov %rax,%rdx
4010d6: 4c 89 c0 mov %r8,%rax
4010d9: eb d6 jmp 4010b1 <fun6+0x3c>
4010db: f3 c3 repz retq
以下是我找到的节点
0x603320 <node1>: 0x0b 0x01 0x00
(gdb) x/3x *($edi+0x8)
0x603330 <node2>: 0x2f 0x03 0x00
(gdb) x/3x *(*($edi+0x8)+0x8)
0x603340 <node3>: 0x72 0x02 0x00
(gdb) x/3x *(*(*($edi+0x8)+0x8)+0x8)
0x603350 <node4>: 0xd2 0x03 0x00
(gdb) x/3x *(*(*(*($edi+0x8)+0x8)+0x8)+0x8)
0x603360 <node5>: 0xa5 0x00 0x00
(gdb) x/3x *(*(*(*(*($edi+0x8)+0x8)+0x8)+0x8)+0x8)
0x603370 <node6>: 0x45 0x01 0x00
(gdb) x/3x *(*(*(*(*(*($edi+0x8)+0x8)+0x8)+0x8)+0x8)+0x8)
0x603380 <node7>: 0x59 0x02 0x00
(gdb) x/3x *(*(*(*(*(*(*($edi+0x8)+0x8)+0x8)+0x8)+0x8)+0x8)+0x8)
0x603390 <node8>: 0x63 0x00 0x00
(gdb) x/3x *(*(*(*(*(*(*(*($edi+0x8)+0x8)+0x8)+0x8)+0x8)+0x8)+0x8)+0x8)
0x6033a0 <node9>: 0xa6 0x00 0x00
我也发现这很奇怪,因为我认为显示的最终数字应该是指向下一个节点的指针,但它们都只是0?