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