From: Miguel F. <mfr...@gm...> - 2005-06-05 14:32:27
|
hi Hans, Thibaut, On 6/4/05, Hans-Dieter Kosch <hd...@t-...> wrote: > The older compilers do not understand the syntax > __asm__ ( "command %[name0]" : : [name0] "x"(arg0) ) > They only understand > __asm__ ( "command %0" : : "x"(arg0) ) interesting. i wasn't aware of this newer syntax. it is definitely much better - having to remember the argument order is stu= pid. > This is really not very elegant, but maybe there's a workaround with > #define and/or #ifdef ? yes and no. i tried what you suggest, adding #defines: #define asmLastAvg "%0" #define asmL1 "%1" #define asmL3 "%2" #define asmL2P "%3" ... and so on. unfortunately it still doesn't fix compilation on gcc 2.95. now it triggers a different gcc's idiosyncrasy: "more than 10 operands in `asm'". some web searching revealed the following interesting discussion (basically gcc folks considered that %[0-9] followed by numbers was a valid syntax). http://gcc.gnu.org/ml/gcc-bugs/2000-03/msg01000.html http://gcc.gnu.org/ml/gcc-bugs/2000-03/msg01001.html it seems that newer gcc's don't suffer from this "documented limitation". now back to 2005, we have basically two options: 1) require gcc > 3.x for compiling xine. 2) converting some of these arguments to access variables directly. the problem is that it requires moving these variables to static globals, and i don't know if it would have any impact on performance. greedyh.asm comment says: "in tight loop some vars are accessed faster in local storage" i will investigate implementing (2). any ideas/comments would be appreciate= d. Miguel |