GCC-Error: "More than 10 operands in asm"

From: Frank Mehnert (fm3@os.inf.tu-dresden.de)
Date: Wed May 03 2000 - 11:02:43 EST


Hi,

sorry for asking this question in the Linux-Kernel Mailing list,
but it seems that I can get the best solution for my problem here
(gnu.gcc.help ignores my question).

A code fragment of a project looks like this:

  asm volatile(" <some assembler instructions here>"
               : "=a" (outEAX),
                 "=b" (outEBX),
                 "=c" (outECX),
                 "=d" (outEDX),
                 "=S" (outESI),
                 "=D" (outEDI)
               : "a" (inEAX),
                 "b" (inEBX),
                 "c" (inECX),
                 "d" (inEDX),
                 "S" (inESI),
                 "D" (inEDI)
               : "memory");

This can't be compiled with gcc 2.95 because there are more than 10
operands. Why does such an limit exist? AFAIK I can't split the code
fragment into two parts ala

  asm volatile(" <some assembler inststructions here> "
               : "=a" (outEAX),
                 "=b" (outEBX),
                 "=c" (outECX),
                 "=d" (outEDX),
                 "=S" (outESI),
                 "=D" (outEDI));
  asm volatile(" "
               : "a" (inEAX),
                 "b" (inEBX),
                 "c" (inECX),
                 "d" (inEDX),
                 "S" (inESI),
                 "D" (inEDI)
                : "memory");

because I don't know how gcc changes the registers between the two asm
instructions. Is there any trick to handle more than 10 operands with
gcc?

Frank

-- 
Frank Mehnert
## Dept. of Computer Science, Dresden University of Technology, Germany ##
## E-Mail: fm3@os.inf.tu-dresden.de    http://os.inf.tu-dresden.de/~fm3 ##

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun May 07 2000 - 21:00:12 EST