This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Making a direct function call from inline assembly
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.