Estoy haciendo un programa en ensamblador y a la hora de compilar me parecen los siguientes errores:
sesion8_ej1.s:8: Error: suffix or operands invalid for `push'
sesion8_ej1.s:13: Error: suffix or operands invalid for `push'
sesion8_ej1.s:27: Error: suffix or operands invalid for `pop'
sesion8_ej1.s:29: Error: suffix or operands invalid for `pop'
He buscado por todas partes y he llegado a la conclusión de que ésto pasa porque trabajo a 64 bits pero no se cómo solucionarlo...
El programa utiliza un archivo en lenguaje C y el ensamblador como subrutina externa.
main()
{ int res;res=factorial (3);
printf("Factorial(3)= %d\n", res);
res=factorial (5);
printf("Factorial(5)= %d\n", res);
res=factorial (6);
printf("Factorial(6)= %d\n", res);
}/*int factorial (int n)
{
int factorial=1, i;for(i=n;i>0;i--)
factorial=factorial * i;return(factorial);
}
*/
.global factorial
factorial:
#Crear enlace dinámico
pushl %ebp
movl %esp, %ebp
#Reservar espacio variables locales
subl $4, %esp
#Salvar registros
pushl %edi#Código subrutina
movl $0, %edi
for:
cmpl $0, %edi
jle endimull -4(%ebp)
decl %ediend:
popl %edi
movl %ebp, %esp
popl %ebp
ret
Saludos.
