Witam, moim zadaniem jest odtworzenie funkcji z kodu assembler. Kod przedstawiam niżej
400584: 53 push rbx
400585: 48 89 fb mov rbx,rdi
400588: b8 01 00 00 00 mov eax,0x1
40058d: 48 85 ff test rdi,rdi
400590: 7e 18 jle 4005aa <compute+0x26>
400592: 48 8d 7f ff lea rdi,[rdi-0x1]
400596: e8 e9 ff ff ff call 400584 <compute>
40059b: 48 89 df mov rdi,rbx
40059e: 48 29 c7 sub rdi,rax
4005a1: e8 de ff ff ff call 400584 <compute>
4005a6: 48 83 c0 01 add rax,0x1
4005aa: 5b pop rbx
4005ab: c3 ret
Wiem, że rozwiazanie to:
return n <= 0 ? 1 : compute(n - compute(n - 1)) + 1;
Tylko nie wiem skąd mam wiedzieć, że wywołanie funkcji compute jest zagnieżdżone