[C con Clase] Ensamblador (sintaxis intel) en C usando gcc.
Adolfo Cárdenas
adocardenas en gmail.com
Mar Abr 8 05:19:56 CEST 2008
El 4/04/08, Programante <programante en gmail.com> escribió:
> Adolfo Cárdenas escribió:
> > La solución que encontré:
> > Se deben declarar como públicas las variables a usar
> > y al usarlas se les antepone un subguión('_').
> >
> El que estén precedidas por un subguión puede deberse a la directiva
> leading-underscores (en cuyo caso no harían falta si se compila con
> -fno-leading-underscore).
> Otra opción sería acceder por la posición respecto a esp
> > No puedo todavía cambiar el valor de una variable
> > Por ejemplo en
> >
> > int var;
> >
> > void Agrega1()
> > {
> > var = 5;
> > asm(".intel_syntax noprefix\n"
> > "add _var,1 \n"
> > ".att_syntax");
> > }
> > no ocurre ningún cambio en el valor de la variable var .
> >
>
> En realidad, la forma "correcta", es pasar como parámetros posteriores a
> asm
> las variables que toma de entrada, las que toma como salida y los
> registros cuyos
> valores invalida la sección en ensamblador.
Buenas
Realicé esta función para efectuar una operación de rotación de bits y funcionó
byte hhh;
byte op1;
byte op2;
byte ensamblador(byte b1, byte b2)
{
op1 = b1;
op2 = b2;
asm(".intel_syntax noprefix\n"
"mov ah, _op1\n"
"mov cl, _op2\n"
"rol ah, cl\n"
"mov _hhh, ah\n"
".att_syntax");
return hhh;
}
¿Cómo sería usando esp?
Por otro lado, la opción -fno-leading-underscore no se como colocarla en
el compilador dev c++ para window
Muchas gracias
Más información sobre la lista de distribución Cconclase