avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AW: [avr-gcc-list] inline asm


From: Peter Hierholzer
Subject: AW: [avr-gcc-list] inline asm
Date: Fri, 28 May 2004 20:56:01 +0200

Hi Muhammed,

There are 2 chapters ("avr-libc and assembler programs" and "Inline Asm")
the avr-libc documentation 

There is also a cookbook in the net. Look in google for "avr inline
assembler cookbook"

mfg
Peter




> -----Ursprüngliche Nachricht-----
> Von: address@hidden [mailto:address@hidden
> Im Auftrag von Muhammed
> Gesendet: Donnerstag, 27. Mai 2004 11:55
> An: address@hidden
> Betreff: [avr-gcc-list] inline asm
> 
> How can I convert this code into inline assembly compatible with AVR-gcc
> compiler. Is there a tool for that? Or a manual? Thanks in advance,
> 
> Here is my AVR assembler code:
> START: ldi r16, 0x12
>             ldi r17, 0x52
>             ldi r18, 0xF3
>             ldi r19, 0xFF
>             ldi r20, 0xA7
>             ldi r21, 0x5B
>             ldi r22, 0x13
>             ldi r23, 0xC9
> 
> Add32:      add a0,b0     ;Add low bytes
>                 mov tmp0,a0
>                 adc a1,b1     ;Add higher bytes with carry
>                 mov tmp1,a1
>                 adc a2,b2     ;
>                 mov tmp2,a2
>                 adc a3,b3
>                 mov tmp3,a3   ;
>                 ldi r16, 0x73
>                 ldi r17, 0xD8
>                 ldi r18, 0x49
>                 ldi r19, 0xE4
>                 ldi r20, 0xFF
>                 ldi r21, 0x91
>                 ldi r22, 0x5A
>                 ldi r23, 0x73
> 
>                add a0, b0
>                adc a1, b1
>                adc a2, b2
>                adc a3, b3
>     mov b0, tmp0
>     mov b1, tmp1
>     mov b2, tmp2
>     mov b3, tmp3
> 
> Mul32:      clr     res7           ;clear 4 highest bytes of result
>                 clr     res6           ;
>                 clr     res5           ;
>                 sub     res4,res4      ;and carry
>                 ldi     counter,33     ;init loop counter
> 
> m32u_loop:      ror     res3           ;rotate result and multiplier
>                 ror     res2           ;
>                 ror     res1           ;
>                 ror     res0           ;
>                 dec     counter        ;decrement loop counter
>                 breq    Return32u          ;if counter zero return
>                 brcc    m32u_skip      ;if bit 0 of multiplier set
>                 add     res4,  b0      ;add multiplicand to result
>                 adc     res5, b1       ;
>                 adc     res6, b2       ;
>                 adc     res7, b3       ;
> m32u_skip:      ror     res7           ;shift right result byte 7
>                 ror     res6           ;rotate right result
>                 ror     res5           ;
>                 ror     res4           ;
>                 rjmp    m32u_loop      ;
> Return32u:      ret
> 
> .EXIT
> 
> _______________________________________________
> avr-gcc-list mailing list
> address@hidden
> http://www.avr1.org/mailman/listinfo/avr-gcc-list



reply via email to

[Prev in Thread] Current Thread [Next in Thread]