RTV forum PL | NewsGroups PL

Jak wykorzystać makra assemblerowe w plikach *.s w projekcie GCC?

Macro w C

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wykorzystać makra assemblerowe w plikach *.s w projekcie GCC?

Krzysztof
Guest

Sat Jan 07, 2006 3:54 pm   



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 @1,low(@0) ; Subtract low byte
sbci @2,high(@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ć?

Marcin Stanisz
Guest

Sat Jan 07, 2006 5:02 pm   



Dnia Sat, 7 Jan 2006 16:54:07 +0100, Krzysztof napisał(a):
<ciach>
Quote:
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"

Piotrek Sz.
Guest

Sat Jan 07, 2006 9:14 pm   



Krzysztof napisał(a):

Quote:
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 @1,low(@0) ; Subtract low byte
sbci @2,high(@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/

Piotrek Sz.
Guest

Sat Jan 07, 2006 9:18 pm   



plik.s

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

Krzysztof Szmurło
Guest

Sun Jan 08, 2006 12:02 am   



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

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wykorzystać makra assemblerowe w plikach *.s w projekcie GCC?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map