gcc question for inline assembly.

Marcelo Slomp mslomp@linuxmail.org
Tue Sep 12 12:24:00 GMT 2006



Stuart Cracraft wrote:
> 
> Hi - someone supplied the following code
> in a C++ program to me that g++ compiled.
> 
> However, I want to convert it to use it in
> a regular C program that gcc can compile.
> 
> Needless to say, the construct does not work
> for GNU C.
> 
> I've tried placing each line of the assembly
> in asm("...."); and that also fails to get
> gcc to compile it.
> 
> What would the equivalent GNU C function for the
> below be?
> 
> static unsigned int bitScanAndReset(unsigned long long & bb) {
> 
>        __asm
>        {
>                xor     edx, edx
>                mov     ebx, [bb]
>                xor     eax, eax
>                inc     edx
>                bsf     ecx, [ebx]
>                jnz     found
>                bsf     ecx, [ebx+4]
>                lea     ebx, [ebx+4]
>                xor     eax, 32
>        found:
>                shl     edx, cl
>                xor     eax, ecx
>                xor     [ebx], edx
>        }
> }
> 
> Thanks,
> 
> Stuart
> 
> 

Notice that the assembler used by gcc (as) uses by default the at&t assembly
syntax, and you have intel code.
You can either, translate the code to at&t syntax or use the -masm=intel
flag to compile (mount) this code.

read more on at&t syntax at:
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

Regards,
Marcelo Slomp
-- 
View this message in context: http://www.nabble.com/gcc-question-for-inline-assembly.-tf2256651.html#a6264969
Sent from the gcc - Help forum at Nabble.com.



More information about the Gcc-help mailing list