MadMass
MadMass

Reputation: 333

GCC inline ASM with variable

I'm trying to use the following ASM inline code in my C++ source, given for Visual Studio :

__asm {
mov ecx,target
}

where target is a void* pointer. I don't know how to convert this into GCC-compatible code. I know that GCC use synthax like :

asm (".intel_syntax noprefix");    
asm ("mov ecx,target");    

but obviously there's a problem with the variable in this situation. So, anyone could explain me how to use a pointer with inline ASM using GCC for Windows ?

Thanks for your help.

Upvotes: 7

Views: 2942

Answers (1)

theadnangondal
theadnangondal

Reputation: 1664

try this assembly this might help.... atleast it is working for me.

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *arg[])
{
  int retval;
  printf ( " retval = %d \n", retval );
  asm volatile(
           "movl %%ecx , %0\n\t"
           :"=r" (retval));    
  printf ( "retval = %d \n", retval );
  return 0; 
}

prints the following value for me ... I have tried it debugging the second value is same as the value present in ecx register.

p $ecx

command in gdb

> retval = 0  
> retval = -72537468

Upvotes: 1

Related Questions