segfault с рекурсивным факториалом в сборке fasm - PullRequest
0 голосов
/ 15 января 2019

Я получаю segfault с моим кодом, используя сборку fasm. Я пытался сделать факториальную функцию с помощью рекурсии. Я хочу посоветовать мой код и, возможно, пример факториальной функции в fasm

format PE console
entry _start

include 'win32a.inc'

section '.data' data readable writable
p: db 'pause > null', 0
entry_message: db 'entrer le nombre n pour calculer la fonction euler totient: ', 10, 0
n: dd ?
num: db 'number %d', 10, 0

section '.code' readable writable 
_start:
       start:
       push 4
       call _fact
       add esp, 4
       push 0
       call [ExitProcess]

_fact:
        push ebp
        mov ebp, esp

        mov eax,[ebp+8]

        cmp eax, 1
        je _end

        dec eax
        push eax
        call _fact

        mov ebx, [ebp+8]
        mul ebx

_end:
    mov ebp, esp
    pop ebp 
    ret

section '.idata' import data readable 
library kernel32, 'kernel32.dll', \
        msvcrt, 'msvcrt.dll'

import kernel32, \
        ExitProcess, 'ExitProcess' \ 

import msvcrt, \
        printf, 'printf', \
        system, 'system' 

Я не могу дать вам больше подробностей, потому что для меня это должно работать, но, очевидно, я где-то допустил ошибку. Кстати, я могу посоветовать отладку FAMM на Windows?

Большое спасибо за помощь!

...