проблема с ассемблерным кодом, вычисление факториала - PullRequest
0 голосов
/ 17 октября 2010

Учитывая число, эта программа вычисляет факториал, но она больше не работает с числом больше 9

.section .data
.section .text
.globl _start

_start:
pushl $10
movl %eax, %ebx

call func
addl $4, %esp  
movl %eax, %ebx

movl $1, %eax
int $0x80

.type func,@function

func:
    pushl %ebp
    movl %esp, %ebp
    movl 8(%ebp), %eax
    cmpl $1, %eax
    je fim_loop
    decl %eax
    pushl %eax
    call func
    movl 8(%ebp), %ebx
    imull %ebx, %eax

    fim_loop:
        movl %ebp, %esp
        popl %ebp
        ret

после компиляции и запуска программы, echo $? должен вернуть результат, но он возвращает 0 вместо правильного результата, кто-нибудь знает, что не так с этим кодом?

1 Ответ

2 голосов
/ 17 октября 2010

кажется, что выходное значение программы ограничено в размере, я думаю, самое высокое значение - 255, поэтому я должен использовать sys_write или что-то из libc

...