数値を指定すると、このプログラムは階乗を計算しますが、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 を返しています。このコードの何が問題なのか知っている人はいますか?