[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