Lennyk <lennyk430@xxxxxxxxx> writes: > Code (Window-style): > int bswap(int n) > { > __asm > { > mov eax, n > bswap eax > mov n, eax > } > return n; > } > > After looking at some guides/tutorials I've translated this code to Linux: > int bswap(int n) > { > asm(".intel_syntax noprefix"); > asm("mov eax, n"); > asm("bswap eax"); > asm("mov n, eax"); > asm(".att_syntax noprefix"); > return n; > } > > Compilation passes - but the linker shouts: "undefined reference to `n'" > > What am I doing wrong? Shouldn't it be straight forward to translate > these simple commands to Linux? gcc inline assembler does not work like that. You can't simply refer to local variables in the assembler code. I recommend the friendly manual: http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Extended-Asm.html In this case, though, you shouldn't use inline assembler at all, just use __builtin_bswap32. http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Other-Builtins.html Ian