Wstawki w assemblerze AVR

May 17, 2007 6 Replies

Witam! Pisze procedury w assemblerze, ktore maja sie dac dolaczyc do innych programow pisanych w assemblerze jaki i w avr-gcc. Niestety skladnia assemblera atmela nieco odbiega od asemblera w gcc, stad pytanie, jaka zmienna ustawia gcc, ktora moznaby wykorzystac w dyrektywach ifdef do alternatywnych wstawek dla gcc ? Cos w stylu: #ifdef kompilujepodgcc #include <avr/io.h>



#elseif costam tylko dla czystego assemblera #endif.



I drugie pytanie, jak wymienic cos takiego: _SFR_IO_ADDR(PORTD)



na jakies makro, ktore pod gcc bedzie wygladalo tak wlasnie, a przy kompilacji w assemblerze z AVR Studio zamieni sie na po prostu PORTD ? Oczywiscie chodzi o ogolna postac typu _SFR_IO_ADDR(parametr). Z gory dziekuje i pozdrawiam, T.M.F.



In the darkest hour on Thu, 17 May 2007 21:22:23 +0200, T.M.F. snipped-for-privacy@nospam.mp.pl> screamed:

GCC używa składni AT&T. Na sieci widziałem kiedyś konwertery składni, ale się tym tematem nie zajmowałem. Dosyć ładne howto odnośnie wklejania:

formatting link

Artur M. Piwko pisze:

To znalazlem, dzieki. Mnie nie chodzi o przekonwertowanie kodu, tylko o napisanie go tak, zeby dal sie kompilowac zarowno w assemblerze AVR Studio, jaki i dolaczyc do programu w c. W tym celu chce wykorzystac kompilacje warunkowa, np. po wyktryciu kompilatora gcc automatycznie mi dolaczy biblioteke io.h, czy umiesci definicje .global dla procedur. To juz obeszlem, bo znalazlem znaczniki charakterystyczne dla AVR Studio. Mam tylko problem z makrami typu _SFR_IO_ADDR(PORTD), ktore powinno byc rozwijane do _SFR_IO_ADDR(PORTD) lub PORTD w zaleznosci od kompilatora. Ma moze ktos pomysl jak zrobic np. #define z parametrem?

T.M.F. wrote: ...

...

formatting link
W szczególności makra __GNUC__ i __ASSEMBLER__

Pozdrawiam,

In the darkest hour on Fri, 18 May 2007 16:34:13 +0200, T.M.F. snipped-for-privacy@nospam.mp.pl> screamed:

#if COS_CO_WSKAZUJE_NA_AVRSTUDIO #define _SFR_IO_ADDR(x) x #endif

Lub po prostu, jeśli w AVRStudio nie ma makra _SFR_IO_ADDR:

#ifndef _SFR_IO_ADDR #define _SFR_IO_ADDR x #endif

In the darkest hour on Fri, 18 May 2007 16:34:13 +0200, T.M.F. snipped-for-privacy@nospam.mp.pl> screamed:

#if COS_CO_WSKAZUJE_NA_AVRSTUDIO #define _SFR_IO_ADDR(x) x #endif

Lub po prostu, jeśli w AVRStudio nie ma makra _SFR_IO_ADDR:

#ifndef _SFR_IO_ADDR #define _SFR_IO_ADDR(x) x #endif

T.M.F. snipped-for-privacy@nospam.mp.pl> napisał(a):

A nie możesz dla obu wersji(Atmel asm i Gcc asm) użyć tej samej wersji ?? Np. #ifdef kompilujepodgcc #define __SFR_OFFSET 0 #include <avr/io.h>

#elseif .include "m8def.inc" ;costam tylko dla czystego assemblera #endif. in r0,PORTD ; ...

Piotrek

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required