[MPlayer-users] Impossible operand error compiling for strongarm

Reimar Döffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Tue Feb 3 10:39:04 CET 2009


On Mon, Feb 02, 2009 at 10:22:55PM -0600, Christopher L wrote:
> So I go over to the offending line in arm/mathops.h.  After reading a few tutorials on assembly, I have found the following.
> 1)  The "+" modifier isn't allowed by gcc in inline assembly.

What gave you that idea?

> 2)  gcc uses "AT&T" syntax which is "operation source destination"

"AT&T-syntax" only exists for x86, so it sure can't use that for ARM. It
uses whatever the gnu assembler uses, searching for "GNU assembler ARM"
should find enough tutorials.

> #define mid_pred mid_pred
> static inline av_const int mid_pred(int a, int b, int c)
> {
>     int m;
>     __asm__ volatile (
>         "mov   %0, %2  \n\t"
>         "cmp   %1, %2  \n\t"
>         "movgt %0, %1  \n\t"
>         "movgt %1, %2  \n\t"
>         "cmp   %1, %3  \n\t"
>         "movle %1, %3  \n\t"
>         "cmp   %0, %1  \n\t"
>         "movgt %0, %1  \n\t"
>         : "=&r"(m), "+r"(a)
>         : "r"(b), "r"(c));

I can't see how your compiler can run out of registers with only 4
operands used. Either some compilation flags are bad or your compiler
version is simply broken IMO.



More information about the MPlayer-users mailing list