This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]