这是我今天第二次看到这种功能:
.text:00000000000010B0 sub_10B0 proc near ; CODE XREF: sub_1120:loc_1143↓p
.text:00000000000010B0 lea rdi, byte_4418
.text:00000000000010B7 lea rax, byte_4418
.text:00000000000010BE cmp rax, rdi
.text:00000000000010C1 jz short locret_10D8
.text:00000000000010C3 mov rax, cs:_ITM_deregisterTMCloneTable_ptr
.text:00000000000010CA test rax, rax
.text:00000000000010CD jz short locret_10D8
.text:00000000000010CF jmp rax
.text:00000000000010CF ; ------------------------------------------------------------------
.text:00000000000010D1 align 8
.text:00000000000010D8
.text:00000000000010D8 locret_10D8: ; CODE XREF: sub_10B0+11↑j
.text:00000000000010D8 ; sub_10B0+1D↑j
.text:00000000000010D8 retn
.text:00000000000010D8 sub_10B0 endp
据我了解,jz无论如何,两者都会跳转,所以第一个jz总是会跳转到ret.
为什么这个函数不写得更简单,就像一个单一的return &byte_4418?
lea rax, byte_4418
retn
我希望我的英语足够好,可以被理解。
谢谢,
最大限度
PS:对不起,我不知道用的是哪个编译器。