Making a direct function call from inline assembly
Job Noorman
jobnoorman@gmail.com
Fri Aug 13 09:57:00 GMT 2010
On Friday 13 August 2010 11:32:25 you wrote:
> On 08/13/2010 10:25 AM, Job Noorman wrote:
> > //file main.cpp
> > void func() {}
> >
> > int main()
> > {
> >
> > //this works but GCC generates an indirect call:
> > // movl $_Z4funcv, %eax
> > // call *%eax
> > asm("call *%0" : : "r"(func));
> >
> > //this is what I conceptually want to do but doesn't work because
> > //GCC generates
> > // call $_Z4funcv
> > //which gives an error from the assembler:
> > // main.cpp: Assembler messages:
> > // main.cpp:20: Error: suffix or operands invalid for `call'
> > //I would like to find a way to make GCC generate the following:
> > // call _Z4funcv
> > //(note there is no "$")
> > asm("call %0" : : "i"(func));
> >
> > }
>
> asm("call %P0" : : "i"(func));
>
> Andrew.
Wow thanks a lot!
Is this feature documented somewhere? I've been looking through the manuals
but haven't found it.
More information about the Gcc-help
mailing list