Hi Steve,

Thanks for the information. I know the symbol should be unique. Actually, I changed the symbol many time (very unique), but the compiler still complains the same thing. If I move the same code (such as a function) to another code file, then everything is fine. I am just confused...


Steve Underwood wrote:
Haodong Wang wrote:

Hi,

Sometime I have a strange problem when I do jump in my assembly code (embedded in C), the compiler always complains "Error: symbol 'L1' is already defined". I changed the symbol, but it still complains the same problem. Is that the bug in mspgcc? Any solution to get around? Thanks!

"       mov #1000, r8   \n"
"L1:                            \n"
"       mov #1000, r9   \n"
......
"       jnz L1                \n"
             haodong

Defining L1 creates a symbol in the assembly language code with a fixed name. If you do that more than once you will get an error tht the symbol is already defined. If you try something like the following that doesn't happen, as the actual names of the labels are generated dynamically (I just grabbed a suitable example from my own source code. This does an efficient Q1.15 multiply for machines with no hardware multiplier).

Steve

   __asm__ (
       " tst    %[x] \n"
       " jge    2f \n"
       " mov    #-1,%[x1] \n"
       " jmp    2f \n"
       "6: \n"
       " add    %[x],%A[z] \n"
       " addc     %[x1],%B[z] \n"
       "1: \n"
       " rla    %[x] \n"
       " rlc    %[x1] \n"
       "2: \n"
       " rra    %[y] \n"
       " jc    5f \n"
       " jne    1b \n"
       " jmp    4f \n"
       "5: \n"
       " sub    %[x],%A[z] \n"
       " subc     %[x1],%B[z] \n"
       "3: \n"
       " rla    %[x] \n"
       " rlc    %[x1] \n"
       " rra    %[y] \n"
       " jnc    6b \n"
       " cmp    #0xFFFF,%[y] \n"
       " jne    3b \n"
       "4: \n"
       //Shift to Q1.15 format (i.e. the top 16 bits are returned)
          " rla   %A[z] \n"
       " rlc   %B[z] \n"
       " mov    %B[z],%[x1] \n"
       : [z] "+r"(z), [x1] "+r"(x1)
       : [x] "r"(x), [y] "r"(y));



-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users



Reply via email to