Compte tenu d'un certain nombre, ce programme calcule le factoriel, mais il ne fonctionne longtemps avec un nombre plus grand que 9avec le code asm, le calcul du factoriel
.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
après compilation et exécuter le programme, echo $? devrait renvoyer le résultat, mais cela renvoie 0 au lieu du bon résultat, quelqu'un sait ce qui ne va pas avec ce code?
Pourriez-vous poster le code final? – jyz