🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
2 messages
2 total messages Started by ici Sat, 12 Jun 2010 00:01
Błąd: syntax Unexpected REGDEF
#2209
Author: ici
Date: Sat, 12 Jun 2010 00:01
61 lines
2462 bytes
Cześć,
Nie mam już pomysłu o co tutaj chodzi?
Pewnie kwestia jakiegoś ustawienia?
Kręcę się w kółko.
Może ktoś mi coś podpowie? Z góry dziękuję.

Kompilator C CodeVisionAVR v2.04.4a dla mikrokontrolerków AVR.
Kompiluje program bez błędów, natomiast podczas linkowania tworzy się
plik assemblerowy z głupim błędem. Ponieważ wszystko dzieje się z
automatu, nie mam wpływu na to co linker tworzy.
Opis błędu jak w tytule. Poprawienie błędu ręcznie nie daje rezultatu,
bo dzieje się to podczas procesu linkowania w automacie.
A potem linker wywala błąd i po zawodach.
Kawałek tego automatycznego kodu w asm:

	RJMP 0x00
	RJMP 0x00
	RJMP 0x00
	RJMP 0x00

_0x24:
	.DB  LOW(_0x23),HIGH(_0x23)
_0x2A:			//**poniżej dłuuuga linijka generująca błąd
	.DB LOW(_LCD_Init),HIGH(_LCD_Init),LOW(_LCD_Cls),HIGH(_LCD_Cls),
             __ LOW(_LCD_XY),HIGH(_LCD_XY),LOW(_LCD_Char),HIGH(_LCD_Char)
	.DB  LOW(_LCD_Text),HIGH(_LCD_Text)
_0x0:
	.DB  0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
	.DB  0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
	.DB  0x2A,0x0,0x20,0x53,0x74,0x61,0x72,0x74
	.DB  0x20,0x5A,0x61,0x73,0x69,0x6C,0x61,0x63
	.DB  0x7A,0x61,0x0
_0x200005F:
//*************
Chodzi o nienaturalnie długą linię .DB pod adresem 0x2A (trochę się
połamała przy wklejaniu do tego postu, ale ciąg znaków jest w jednym
wierszu.

	Ten kawałek  w assemblerze odpowiada kodowi w C:
(deklaracje procedur poniżej kody źródłowe w LCD1.H)
//****************************************************************
	void LCD_Init(void);		//Inicjowanie wyświetlacza LCD
	void LCD_Cls(void);          	//Czyść ekran
	void LCD_XY(char k, char w);    //Ustaw współrzędne kursora ko
	void LCD_Char(char znak);       //Umieszcza znak na wyświetlaczu
	void LCD_Text(char *ptext);  	//Pisz tekst na LCD wskazywany
	void LCD_Int(int i);	        //Pisz Integer
//****************************************************************

Biblioteka LCD1.H własnej roboty ale sprawdzona w starszej wersji
Kompilatora/rów.
Próbowałem wyłączyć generację .ASM bo plik nie jest mi do niczego
potrzebny ale nie znalazłem sposobu na odhaczenie takiej opcji.
   Ze względu na ograniczoną liczbę portów I/O kontrolera musiałem użyć
swojej biblioteki, oryginalna operuje na 7 bitach, moja na 6, co w
ATmega8 pozwala wykorzystać 6-cio bitowy PORTB do wyświetlacza,
pozostałe 2 bity PB6 i PB7 zajmują wejścia dla kwarca zegarowego.

Pzdr.
ici

Re: Błąd: syntax Unexpected REGDEF
#2210
Author: "Bogdan (bogdro)
Date: Tue, 15 Jun 2010 18:03
80 lines
3281 bytes
W dniu 12.06.2010 00:01, ici pisze:
> Cześć,
> Nie mam już pomysłu o co tutaj chodzi?
> Pewnie kwestia jakiegoś ustawienia?
> Kręcę się w kółko.
> Może ktoś mi coś podpowie? Z góry dziękuję.
>
> Kompilator C CodeVisionAVR v2.04.4a dla mikrokontrolerków AVR.
> Kompiluje program bez błędów, natomiast podczas linkowania tworzy się
> plik assemblerowy z głupim błędem. Ponieważ wszystko dzieje się z
> automatu, nie mam wpływu na to co linker tworzy.
> Opis błędu jak w tytule. Poprawienie błędu ręcznie nie daje rezultatu,
> bo dzieje się to podczas procesu linkowania w automacie.
> A potem linker wywala błąd i po zawodach.
> Kawałek tego automatycznego kodu w asm:
>
>     RJMP 0x00
>     RJMP 0x00
>     RJMP 0x00
>     RJMP 0x00
>
> _0x24:
>     .DB  LOW(_0x23),HIGH(_0x23)
> _0x2A:            //**poniżej dłuuuga linijka generująca błąd
>     .DB LOW(_LCD_Init),HIGH(_LCD_Init),LOW(_LCD_Cls),HIGH(_LCD_Cls),
>             __ LOW(_LCD_XY),HIGH(_LCD_XY),LOW(_LCD_Char),HIGH(_LCD_Char)
>     .DB  LOW(_LCD_Text),HIGH(_LCD_Text)
> _0x0:
>     .DB  0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
>     .DB  0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A
>     .DB  0x2A,0x0,0x20,0x53,0x74,0x61,0x72,0x74
>     .DB  0x20,0x5A,0x61,0x73,0x69,0x6C,0x61,0x63
>     .DB  0x7A,0x61,0x0
> _0x200005F:
> //*************
> Chodzi o nienaturalnie długą linię .DB pod adresem 0x2A (trochę się
> połamała przy wklejaniu do tego postu, ale ciąg znaków jest w jednym
> wierszu.
>
>     Ten kawałek  w assemblerze odpowiada kodowi w C:
> (deklaracje procedur poniżej kody źródłowe w LCD1.H)
> //****************************************************************
>     void LCD_Init(void);        //Inicjowanie wyświetlacza LCD
>     void LCD_Cls(void);              //Czyść ekran
>     void LCD_XY(char k, char w);    //Ustaw współrzędne kursora ko
>     void LCD_Char(char znak);       //Umieszcza znak na wyświetlaczu
>     void LCD_Text(char *ptext);      //Pisz tekst na LCD wskazywany
>     void LCD_Int(int i);            //Pisz Integer
> //****************************************************************
>
> Biblioteka LCD1.H własnej roboty ale sprawdzona w starszej wersji
> Kompilatora/rów.

[...]

 Zauważyłeś, że _LCD_Text wylądowało już w kolejnej linijce?
Widocznie, na przykład, tylko 4 funkcje zostaną umieszczone w tej
samej linii w pliku asemblerowym. Nie mam najbledszego pojęcia o
programowaniu AVRów ani o tym kompilatorze C, ale może spróbuj
przerobić plik C/H tak, aby następowały po sobie co najwyżej 3 (czy
tyle, ile będzie trzeba) deklaracje funkcji. Tak, aby było np.

 .DB LOW(_LCD_Init),HIGH(_LCD_Init),LOW(_LCD_Cls),HIGH(_LCD_Cls),
      __ LOW(_LCD_XY),HIGH(_LCD_XY)

 [tutaj np. jakieś zmienne czy cokolwiek]

 .DB LOW(_LCD_Char),HIGH(_LCD_Char)

 [tutaj reszta]

 Swoją drogą, te "__" z przodu wyglądają dziwnie. Masz to w kodzie,
czy do wiadomości się wkleiło samo? Może to to jest problem?

--
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.JabberPL.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads