Macro w C



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Krzysztof" <krysss1981_at_nospam_poczta.onet.pl>
Subject: Macro w C
Date: Sat, 7 Jan 2006 16:54:07 +0100


Witam!

Jak mogę dodać makra do plików *.s dołączanych do projektu w gcc.


Zrobiłem to tak:

dodałem do projektu plik "asembler.s"
Oto jego zwartość:

//------------------------------------------------------
.MACRO SUBI16 ; Start macro definition
subi _at_nospam_1,low(_at_nospam_0) ; Subtract low byte
sbci _at_nospam_2,high(_at_nospam_0) ; Subtract high byte
.ENDMACRO ; End macro definition

.CSEG ; SEGMENT PROGRAMU
.ORG 0 ; wektor zerowania

Reset:

Koniec:
rjmp Koniec
//---------------------------------------------------------

Chodzi mi o to, żeby móc wykorzystać jakoś to makro.
W tym momencie jednak kompilator zwraca mi błąd:
" Error: unexpected end of file in macro definition"

Dążę do tego, żeby uzyskać dokładne opóźnienia w GCC i jedyne co mi
przychodzi do głowy to
asemblerowe makra ale jak je wykorzystać?






Poprzedni Następny
Wiadomość
Spis treści
From: Marcin Stanisz <mstanisz_at_nospam_poczta.bzdury.onet.pl>
Subject: Re: Macro w C
Date: Sat, 7 Jan 2006 18:02:40 +0100


Dnia Sat, 7 Jan 2006 16:54:07 +0100, Krzysztof napisał(a):
<ciach>
Dążę do tego, żeby uzyskać dokładne opóźnienia w GCC i jedyne co mi
przychodzi do głowy to
asemblerowe makra ale jak je wykorzystać?

Są inne sposoby - można zamieścić całą funkcję w asemblerze za pomocą
dyerktywy asm.

Pozdrawiam

Marcin Stanisz
--

"A lie will go round the world before the truth has got its boots on"
Terry Pratchett, "Truth"

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek.SKASUJ_at_nospam_gazeta.pl>
Subject: Re: Macro w C
Date: Sat, 7 Jan 2006 20:14:08 +0000 (UTC)


Krzysztof <krysss1981_at_nospam_poczta.onet.pl> napisał(a):

Witam!

Jak mogę dodać makra do plików *.s dołączanych do projektu w gcc.


Zrobiłem to tak:

dodałem do projektu plik "asembler.s"
Oto jego zwartość:

//------------------------------------------------------
..MACRO SUBI16 ; Start macro definition
subi _at_nospam_1,low(_at_nospam_0) ; Subtract low byte
sbci _at_nospam_2,high(_at_nospam_0) ; Subtract high byte
..ENDMACRO ; End macro definition

..CSEG ; SEGMENT PROGRAMU
..ORG 0 ; wektor zerowania

Reset:

Koniec:
rjmp Koniec
//---------------------------------------------------------

Chodzi mi o to, żeby móc wykorzystać jakoś to makro.
W tym momencie jednak kompilator zwraca mi błąd:
" Error: unexpected end of file in macro definition"

Dążę do tego, żeby uzyskać dokładne opóźnienia w GCC i jedyne co mi
przychodzi do głowy to
asemblerowe makra ale jak je wykorzystać?


A skąd wytrzasnąłes taką składnie , dla assemblera GCC ?
Nie napisałeś , o jaką platformę chodzi.Czy o AVR ?
Wydaj mi się , że jak się używa jakiegoś narzędzia , to zaczyna się pracę od
przeczytania instrukcji obsługi , a nie stosujesz się do zasad , które
obowiązują dla czegoś innego.Tyle wymądrzania się ;-)

plik.s

globl label
macro subi16 a,b,c ; Start macro definition
subi \a,lo8(\c) ; Subtract low byte
sbci \b,hi8(\c) ; Subtract high byte
endm ; End macro definition

section .text
func label
label:
subi16 r16,r17,0x11aa
ret
------------------------------------------------------
plik.c

#include <avr/io.h>

extern void label(void);

int main(void)
{
label();
return(0);
}

Do funkcji "asemblerowej" można również przekazać parametry , jak do funkcji w
"C" , ale więcej o tym w dokumentacji , no i w skarbnicy wszechwiedzy - google ;)

Piotrek

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

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotrek Sz." <zumek.SKASUJ_at_nospam_gazeta.pl>
Subject: Re: Macro w C
Date: Sat, 7 Jan 2006 20:18:18 +0000 (UTC)


plik.s

.globl label
.macro subi16 a,b,c ; Start macro definition
subi \a,lo8(\c) ; Subtract low byte
sbci \b,hi8(\c) ; Subtract high byte
.endm ; End macro definition

.section .text
.func label
label:
subi16 r16,r17,0x11aa
ret

Znów mi kropki wcięło :(


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

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?Krzysztof_Szmur=B3o?= <ks123_at_nospam_tlen.do.wyciecia.pl>
Subject: Re: Macro w C
Date: Sun, 08 Jan 2006 01:02:44 +0100


Dążę do tego, żeby uzyskać dokładne opóźnienia w GCC i jedyne co mi
przychodzi do głowy to
asemblerowe makra ale jak je wykorzystać?

Wykorzystaj te z pliku delay.h. Ewentualnie podpatrz jak tam to zrobiono.

Pozdrawiam
Krzysztof Szmurło