Macro w C
Masz problem? Zapytaj na forum elektroda.pl
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ć?
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"
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/
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/
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