Estoy empezando con el ensamblador en Linux. Guarde el siguiente código como testasm.c
y lo compilé con: gcc testasm.c -otestasm
El compilador responde: "restricción imposible en 'asm'".Error del ensamblador de Linux "restricción imposible en 'asm'"
#include <stdio.h>
int main(void)
{
int foo=10,bar=15;
__asm__ __volatile__ ("addl %%ebx,%%eax"
: "=eax"(foo)
: "eax"(foo), "ebx"(bar)
: "eax"
);
printf("foo = %d", foo);
return 0;
}
¿Cómo puedo resolver este problema? (He copiado el ejemplo de here.)
Debian Lenny, kernel 2.6.26-2-amd64
versión de gcc 4.3.2 (Debian 4.3.2-1.1)
Resolución:
Ver la respuesta aceptada: parece que la cláusula 'modificada' ya no se admite.
Eso funciona, gracias. Parece que ya no le gusta la cláusula 'modificada', así que supongo que tendré que presionar y soltar lo que cambie. – slashmais
La cláusula modificada todavía funciona; Creo que el problema es que "output" especifica implícitamente "modified" también, por lo que tener eax representado en ambos campos estaba causando el problema. –