> 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? http://www.ethernut.de/en/documents/arm-inline-asm.html ARM GCC Inline Assembler Cookbook + Read-write operand (not supported by inline assembler) I have seen it mentioned elsewhere also. >> 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. http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s3 GCC, the GNU C Compiler for Linux, uses AT&T/UNIX assembly syntax. ... The direction of the operands in AT&T syntax is opposite to that of Intel. In Intel syntax the first operand is the destination, and the second operand is the source whereas in AT&T syntax the first operand is the sourceand the second operand is the destination. ie, >> #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'd be surprised if it were the number of registers because I also read somewhere that you really don't run into issues unless you approach 10. _______________________________________________ MPlayer-users mailing list MPlayer-users@xxxxxxxxxxxx https://lists.mplayerhq.hu/mailman/listinfo/mplayer-users