我在这里有这个 Assembly 函数,并且多次运行它试图了解它的作用和模式是什么。在理解它的模式方面,我遇到了砖墙。任何形式的指导在这里都值得赞赏。
0x0000555555555cbe <+0>: push %rbx
0x0000555555555cbf <+1>: mov %edx,%eax
0x0000555555555cc1 <+3>: sub %esi,%eax
0x0000555555555cc3 <+5>: mov %eax,%ebx
0x0000555555555cc5 <+7>: shr $0x1f,%ebx
0x0000555555555cc8 <+10>: add %eax,%ebx
0x0000555555555cca <+12>: sar %ebx
0x0000555555555ccc <+14>: add %esi,%ebx
0x0000555555555cce <+16>: cmp %edi,%ebx
0x0000555555555cd0 <+18>: jg 0x555555555cda <func4+28>
0x0000555555555cd2 <+20>: cmp %edi,%ebx
0x0000555555555cd4 <+22>: jl 0x555555555ce6 <func4+40>
0x0000555555555cd6 <+24>: mov %ebx,%eax
0x0000555555555cd8 <+26>: pop %rbx
0x0000555555555cd9 <+27>: retq
0x0000555555555cda <+28>: lea -0x1(%rbx),%edx
0x0000555555555cdd <+31>: callq 0x555555555cbe <func4>
0x0000555555555ce2 <+36>: add %eax,%ebx
0x0000555555555ce4 <+38>: jmp …Run Code Online (Sandbox Code Playgroud)