From: Hans-Bernhard Broeker Newsgroups: comp.os.msdos.djgpp Subject: Re: Inline Assembly and return value of a function Date: 31 Jul 2002 07:50:42 GMT Organization: Aachen University of Technology (RWTH) Lines: 18 Message-ID: References: <5 DOT 0 DOT 2 DOT 1 DOT 2 DOT 20020730223902 DOT 009e37d0 AT pop DOT gmx DOT net> NNTP-Posting-Host: acp3bf.physik.rwth-aachen.de X-Trace: nets3.rz.RWTH-Aachen.DE 1028101842 16651 137.226.32.75 (31 Jul 2002 07:50:42 GMT) X-Complaints-To: abuse AT rwth-aachen DOT de NNTP-Posting-Date: 31 Jul 2002 07:50:42 GMT Originator: broeker@ To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Martin Steuer wrote: > __asm__ __volatile( > "bswapl %1\n" > : "=r"(swapped) > : "r"(v) > ); > Now the problem: the return statement doesnt move the result of bswap() > into eax, thus some garbage is returned. You're not telling GCC that 'swapped' is supposed to be in the same register as 'v'. I think you had best get rid of 'swapped' altogether. Either that, or do as the Linux code snippet posted by DJ: reference the input register in the output specification, so GCC knows these two registers are supposed to be the same. -- Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de) Even if all the snow were burnt, ashes would remain.