Hi gcc gurus, I want to convert the ALREADY EXISTING INLINE ASSEMBLY CODE DEVELOPED IN ADS to arm-linux-gcc. And, I am not getting any concrete info related to: INLINE ASSEMBLY IN ARM-LINUX-GCC. The gcc manual doesnt say much about the constraints and modifiers that are SPECIFIC TO ARM. For illustration I am listing few of the problems I am facing: In continuation to our discussion, I am sending the listing the difficulties I am facing in using Inline assembly in gcc(arm-linux-gcc): /* ADS code */ int *temp = (data + j); __asm__ { LDRD R0,[temp] MOV data1rd,R0 MOV data1id,R1 } /* ADS code */ 1. When the first instruction is translated as: // LDRD R0,[temp] __asm__ ( "LDRD r0, (%0)" : :"g"(temp) ); I am getting following error: [anand@dd2testing2 HE-AAC]$ make /tmp/cci4CSSE.s: Assembler messages: /tmp/cci4CSSE.s:188: Error: missing ']' /tmp/cci4CSSE.s:188: Error: missing ')' /tmp/cci4CSSE.s:188: Error: garbage following instruction -- `ldrd r0,([fp,#-80])' Further, when the parenthesis around %0 are removed, the instruction is assembled without any concern. But, that may not serve the purpose as 'temp' is a pointer. And, the operand ordering is not in aaccordance with gcc. Can I get more info on the order of operands and the constraints that apply in case of ARM(ARM926EJ-S, to be specific). How can I differentiate a ordinary variable and a pointer derefrence in inline assembly. For the second instruction has been translated as: __asm__ ( "MOV r0, %0" :"+g"(data1rd) : ); and this givesthe following error: [anand@dd2testing2 HE-AAC]$ make /tmp/cc0xa7Fh.s: Assembler messages: /tmp/cc0xa7Fh.s:190: Error: register or shift expression expected -- `mov r0,[fp ,#-72]' Please can soemone suggest a better source in this regard(Inline assemly in C source files in arm-linux-gcc) Regards, Anand Kulkarni +91 9880781187