ASM INLINE

Iniciado por HaX991, 12 Mayo 2012, 12:40 PM

0 Miembros y 1 Visitante están viendo este tema.

HaX991

Hola a todos
estoy intentando insertar variables en asm inline gcc en windows tengo este code;


asm(
   ".intel_syntax noprefix;"
   "mov eax, dword ptr args;"
   "add eax, temp;"
   "push [eax];"
);


pero en las variables  "args" y "temp" el compilador me dice undefined reference to .... las variables estan declaradas y tal solo que no se como insertar variables en asm inline de gcc

uso: gcc -masm=intel code.c -o app.exe

...

gracias!

_Enko

Podrias intentar compilar un programa de C, donde utilices los parametros de la ejecutable "args" a ver como los llama al depurar la aplicacion.

Luego, para "temp" tiene que estar declarada antes. Con asm inline no creo que puedas definir variables ya que no estarias accediento a la sección de datos.


int temp;
__asm{
mov temp, eax
}


Saludos

HaX991

#2
sabrias como pasar asm de sintaxis intel a at&t?
es lo que necesito para meter codigo asm inline en gcc para windows
tengo esto

intento traducir esto, el de arriba es codigo intel y el otro at&t pero se que esta mal el mio


asm
{
mov  eax, dword ptr args
add  eax, temp
push [eax]
}



__asm__(
"movl $args, %eax #;"
"addl $temp, %eax;"
"push (%eax);"
);


en este ejemplo de at&t si sirve necesito pasar el puntero de esa forma pero no logro hacerlo


#include <stdio.h>

int main() {
int temp = 4;
int temp2 = 5;
int total = 0;

__asm__ __volatile__("movl %1, %0;"
   "addl %2, %0;"
   : "=r" (total)
   : "r" (temp), "r" (temp2)
   : "0");

  printf("temp: %i, temp2: %i - total: %i\n", temp, temp2, total);
          return 0;
}


gracias, saludos!