RTV forum PL | NewsGroups PL

Jak dostosować wstawki w assemblerze AVR do kompilatora avr-gcc i ATmega?

Wstawki w assemblerze AVR

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak dostosować wstawki w assemblerze AVR do kompilatora avr-gcc i ATmega?

T.M.F.
Guest

Thu May 17, 2007 8:22 pm   



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.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Artur M. Piwko
Guest

Fri May 18, 2007 10:41 am   



In the darkest hour on Thu, 17 May 2007 21:22:23 +0200,
T.M.F. <tfrancuz@nospam.mp.pl> screamed:
Quote:
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 ?

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:
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:229B ]
[ 11:12:00 user up 11345 days, 23:07, 1 user, load average: 0.06, 0.06, 0.06 ]

We don't care. We don't have to. We're the Phone Company.

T.M.F.
Guest

Fri May 18, 2007 3:34 pm   



Artur M. Piwko pisze:
Quote:
In the darkest hour on Thu, 17 May 2007 21:22:23 +0200,
T.M.F. <tfrancuz@nospam.mp.pl> screamed:
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 ?

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:
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html


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?

--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

Artur Lipowski
Guest

Sat May 19, 2007 11:49 am   



T.M.F. wrote:
....
Quote:
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 ?
....


http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html

W szczególności makra __GNUC__ i __ASSEMBLER__


Pozdrawiam,
--
Artur Lipowski

Artur M. Piwko
Guest

Mon May 21, 2007 10:42 am   



In the darkest hour on Fri, 18 May 2007 16:34:13 +0200,
T.M.F. <tfrancuz@nospam.mp.pl> screamed:
Quote:
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?


#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

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:234B ]
[ 10:48:55 user up 11348 days, 22:43, 1 user, load average: 0.06, 0.06, 0.06 ]

The best cure for an active sex life is several years of marriage.

Artur M. Piwko
Guest

Mon May 21, 2007 2:41 pm   



In the darkest hour on Fri, 18 May 2007 16:34:13 +0200,
T.M.F. <tfrancuz@nospam.mp.pl> screamed:
Quote:
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?


#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

--
[ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:234B ]
[ 10:48:55 user up 11348 days, 22:43, 1 user, load average: 0.06, 0.06, 0.06 ]

The best cure for an active sex life is several years of marriage.

Piotrek Sz.
Guest

Tue May 22, 2007 7:42 pm   



T.M.F. <tfrancuz@nospam.mp.pl> napisał(a):

Quote:
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.


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





--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

elektroda NewsGroups Forum Index - Elektronika Polska - Jak dostosować wstawki w assemblerze AVR do kompilatora avr-gcc i ATmega?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map