我试图更多地了解x86中的汇编.我在这里有一个神秘的功能,我知道它会返回int并接受一个int参数.所以它看起来像int mystery(int n){}.但我无法弄清楚C中的功能.大会是:
mov %edi, %eax
lea 0x0(,%rdi, 8), %edi
sub %eax, %edi
add $0x4, %edi
callq < mystery _util >
repz retq
< mystery _util >
mov %edi, %eax
shr %eax
and $0x1, %edi
and %edi, %eax
retq
Run Code Online (Sandbox Code Playgroud)
我不明白lea在这里做了什么,它可能是什么样的功能.