avr-gcc i bledna kompilacja



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: KrzysiekS <ks123_at_nospam_wirtualna_polska.pl>
Subject: avr-gcc i bledna kompilacja
Date: Wed, 4 Jun 2003 15:14:45 +0000 (UTC)


Cześć właśnie walczę z avr-gcc i wygląda na to, że
ostatnia wersja jest totalnie skopana.
Nie rozumiem czemu kompilator traktuje pętle for w taki sposób:

kod w C:
for (;;) { /* loop forever */
PRINT("Press any key...");
EOL();

data = UART_ReceiveByte();

PRINT("You pressed '");
UART_SendByte(data);
PRINT("' which is 0x");
UART_Printfu08(data);
PRINT(" in hexadecimal.");
EOL();
}

fragment kodu assemlera:
59: PRINT("' which is 0x");
+00000066: E483 LDI R24,0x43 Load immediate
+00000067: E090 LDI R25,0x00 Load immediate
+00000068: D053 RCALL +0x0053 Relative call subroutine
60: UART_Printfu08(data);
+00000069: 2F81 MOV R24,R17 Copy register
+0000006A: D079 RCALL +0x0079 Relative call subroutine
61: PRINT(" in hexadecimal.");
+0000006B: E581 LDI R24,0x51 Load immediate
---- No Source ----------------------------------------------------
+0000006C: E090 LDI R25,0x00 Load immediate
+0000006D: CFEB RJMP -0x0015 Relative jump

Jak widać od linii 61 coś w ogóle się chrzani.. funkcja EOL() w ogóle nie jest
wywoływana. Co jest? faktycznie błąd czy ja coś źle robię?

ps. używam avrside, procek to at90s2313

Pozdrawiam
KrzysiekS

========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Jerzy Szczesiul" <jerzy.szczesiul_at_nospam_ep.com.pl>
Subject: Re: avr-gcc i bledna kompilacja
Date: Wed, 4 Jun 2003 21:23:44 +0200


Czesc

Użytkownik "KrzysiekS" <ks123_at_nospam_wirtualna_polska.pl> napisał w wiadomości
news:slrn.pl.bds36b.1t4.ks123_at_nospam_brak.hosta.pl...
[..]
Jak widać od linii 61 coś w ogóle się chrzani.. funkcja EOL() w ogóle nie
jest
wywoływana. Co jest? faktycznie błąd czy ja coś źle robię?

[..]

Tak widac pasuje w optymalizacji.
Jak calkiem wylaczysz optymalizacje
to bedzie slowo w slowo ( tylko kod
prawie 2x dluzszy ).


--
Pozdrowienia
Jurek Szczesiul


========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.atman.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: KrzysiekS <ks123_at_nospam_wirtualna_polska.pl>
Subject: Re: avr-gcc i bledna kompilacja
Date: Thu, 5 Jun 2003 06:16:37 +0000 (UTC)


W artykule <bblh0q$ol2$1_at_nospam_nemesis.news.tpi.pl> Jerzy Szczesiul napisal(a):

Jak widać od linii 61 coś w ogóle się chrzani.. funkcja EOL() w ogóle nie
jest
wywoływana. Co jest? faktycznie błąd czy ja coś źle robię?

[..]

Tak widac pasuje w optymalizacji.
Jak calkiem wylaczysz optymalizacje
to bedzie slowo w slowo ( tylko kod
prawie 2x dluzszy ).

Eksperymentowałem z optymalizacją trochę pomogło,
ale nadal robi to co chcę...

... beznadziejny kompilator :(

KrzysiekS

========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news2.icm.edu.pl!news.atcom.net.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Artur Lipowski <lal_at_nospam_pro.onet.pl>
Subject: Re: avr-gcc i bledna kompilacja
Date: Thu, 5 Jun 2003 06:29:50 +0000 (UTC)


In article <slrn.pl.bds36b.1t4.ks123_at_nospam_brak.hosta.pl>, KrzysiekS wrote:
...
Jak widać od linii 61 coś w ogóle się chrzani.. funkcja EOL() w ogóle nie jest
wywoływana. Co jest? faktycznie błąd czy ja coś źle robię?
Zapodałeś za mało assemblera, być może RJMP -0x0015 jest skokiem do wywołania
EOL.

Do generowania listingu asemblera IMO lepiej używać komendy (reguła
z Makefile):
OBJDUMP = avr-objdump
%.lst: %.elf
$(OBJDUMP) -h -z -S $< > $_at_nospam_

Już to pisałem, ale powtórzę: narzekanie na kompilator w 95% przypadków
oznacza brak wiedzy o języku lub samym kompilatorze.

BTW> zakładam, że nie używasz jakiejś "wykopaliskowej" wersji avr-gcc.

Pozdrawiam,
--
Artur Lipowski
--
http://www.komrel.net - Twoj Serwer Sukcesu!


========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: KrzysiekS <ks123_at_nospam_wirtualna_polska.pl>
Subject: Re: avr-gcc i bledna kompilacja
Date: Thu, 5 Jun 2003 19:22:09 +0000 (UTC)


W artykule <slrnbdtoqt.gg.lal_at_nospam_artur2.krakow.tpg.pl> Artur Lipowski napisal(a):

Jak widać od linii 61 coś w ogóle się chrzani.. funkcja EOL() w ogóle nie jest
wywoływana. Co jest? faktycznie błąd czy ja coś źle robię?
Zapodałeś za mało assemblera, być może RJMP -0x0015 jest skokiem do wywołania
EOL.


Już to pisałem, ale powtórzę: narzekanie na kompilator w 95% przypadków
oznacza brak wiedzy o języku lub samym kompilatorze.

Wiesz co, chyba przyznam Ci rację. Mea culpa. Chyba avr-gcc tak ładnie
to z optymalizował, że się pogubiłem :). Faktycznie ten skok był do wywołania
EOL.

BTW> zakładam, że nie używasz jakiejś "wykopaliskowej" wersji avr-gcc.
najnowszej oczywiście..

Pozdrawiam i dziękuje za "otworzenie oczu" :)

KrzysiekS

========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_at_nospam_poczta.onet.pl.nospam>
Subject: Re: avr-gcc i bledna kompilacja
Date: Thu, 05 Jun 2003 23:48:13 +0200


On Thu, 5 Jun 2003 19:22:09 +0000 (UTC), KrzysiekS wrote:
Zapodałeś za mało assemblera, być może RJMP -0x0015 jest skokiem do wywołania
EOL.
Już to pisałem, ale powtórzę: narzekanie na kompilator w 95% przypadków
oznacza brak wiedzy o języku lub samym kompilatorze.

Wiesz co, chyba przyznam Ci rację. Mea culpa. Chyba avr-gcc tak ładnie
to z optymalizował, że się pogubiłem :). Faktycznie ten skok był do wywołania
EOL.

Swoja droga dziwne troche. Kompilatory C to generalnie potrafia i
chetnie robia w petlach, ale zazwyczaj nie w takich sytuacjach.
Ciekawe skad mu sie to porobilo.

BTW> zakładam, że nie używasz jakiejś "wykopaliskowej" wersji avr-gcc.
najnowszej oczywiście..

Pierwsze etapy [analiza] w gcc sa sprawdzone od lat, szwankowac moze
generacja kodu do avr i ewentualnie polaczenie obu czesci.

J.


========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Jacek =?ISO-8859-2?Q?Rz=EAsista?= <jacek_at_nospam_samm.com.pl>
Subject: Re: avr-gcc i bledna kompilacja
Date: Thu, 05 Jun 2003 09:24:59 +0200


KrzysiekS wrote:

Cześć właśnie walczę z avr-gcc i wygląda na to, że
ostatnia wersja jest totalnie skopana.
Nie rozumiem czemu kompilator traktuje pętle for w taki sposób:

kod w C:
for (;;) { /* loop forever */
PRINT("Press any key...");
EOL();

data = UART_ReceiveByte();

PRINT("You pressed '");
UART_SendByte(data);
PRINT("' which is 0x");
UART_Printfu08(data);
PRINT(" in hexadecimal.");
EOL();
}

fragment kodu assemlera:
59: PRINT("' which is 0x");
+00000066: E483 LDI R24,0x43 Load immediate
+00000067: E090 LDI R25,0x00 Load immediate
+00000068: D053 RCALL +0x0053 Relative call subroutine
60: UART_Printfu08(data);
+00000069: 2F81 MOV R24,R17 Copy register
+0000006A: D079 RCALL +0x0079 Relative call subroutine
61: PRINT(" in hexadecimal.");
+0000006B: E581 LDI R24,0x51 Load immediate
---- No Source ----------------------------------------------------
+0000006C: E090 LDI R25,0x00 Load immediate
+0000006D: CFEB RJMP -0x0015 Relative jump

Jak widać od linii 61 coś w ogóle się chrzani.. funkcja EOL() w ogóle nie
jest wywoływana. Co jest? faktycznie błąd czy ja coś źle robię?
A co robi funkcja EOL ? Jaki stopień optyamlizacji masz włączony ? Która
dokładnie wersja gcc ?


--
Jacek Rzęsista
mailto:jacek_at_nospam_samm.com.pl
ICQ:19324277
Gadu-Gadu:61213

========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!polsl.gliwice.pl!not-for-mai