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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With