gdb : 反汇编代码中对 "test" 的调用是什么?
gdb : What is the call to "test" in the disassembled code?
在查看gdb中的反汇编代码时,有一行
test %r13,%r13
但是代码中没有任何对 "test" 的引用。
0x00002b514569f56f <+95>: cmpq [=12=]x0,0x8(%rbx)
0x00002b514569f574 <+100>: mov %rbx,-0x70(%rbp)
0x00002b514569f578 <+104>: movq [=12=]x0,-0x68(%rbp)
0x00002b514569f580 <+112>: je 0x2b514569f58b <myTest+123>
0x00002b514569f582 <+114>: lea -0x70(%rbp),%rdi
0x00002b514569f586 <+118>: callq 0x2b514591bf90 <_ZN25WeakPreserve>
0x00002b514569f58b <+123>: nop
0x00002b514569f58c <+124>: test %r13,%r13
=> 0x00002b514569f58f <+127>: mov (%r15),%r14
0x00002b514569f592 <+130>: je 0x2b514569f700 <jni_SetObjectArrayElement+496>
0x00002b514569f598 <+136>: mov 0x0(%r13),%r13
0x00002b514569f59c <+140>: test %r12d,%r12d
0x00002b514569f59f <+143>: js 0x2b514569f638 <
这个 "test" 与什么有关,因为它出现了几次,它总是表示同一件事吗?
test是汇编指令,就像你也看到的je,lea,callq,mov指令一样
在查看gdb中的反汇编代码时,有一行
test %r13,%r13
但是代码中没有任何对 "test" 的引用。
0x00002b514569f56f <+95>: cmpq [=12=]x0,0x8(%rbx)
0x00002b514569f574 <+100>: mov %rbx,-0x70(%rbp)
0x00002b514569f578 <+104>: movq [=12=]x0,-0x68(%rbp)
0x00002b514569f580 <+112>: je 0x2b514569f58b <myTest+123>
0x00002b514569f582 <+114>: lea -0x70(%rbp),%rdi
0x00002b514569f586 <+118>: callq 0x2b514591bf90 <_ZN25WeakPreserve>
0x00002b514569f58b <+123>: nop
0x00002b514569f58c <+124>: test %r13,%r13
=> 0x00002b514569f58f <+127>: mov (%r15),%r14
0x00002b514569f592 <+130>: je 0x2b514569f700 <jni_SetObjectArrayElement+496>
0x00002b514569f598 <+136>: mov 0x0(%r13),%r13
0x00002b514569f59c <+140>: test %r12d,%r12d
0x00002b514569f59f <+143>: js 0x2b514569f638 <
这个 "test" 与什么有关,因为它出现了几次,它总是表示同一件事吗?
test是汇编指令,就像你也看到的je,lea,callq,mov指令一样