-
81. Data: 2011-02-02 11:28:34
Temat: Re: książka o programowniu AVR w C
Od: J.F. <j...@p...onet.pl>
On Wed, 2 Feb 2011 12:09:49 +0100, 4CX250 wrote:
>Uśmieszków moich nie dostrzegłeś :)
>Chodziło mi tylko o to że gcc nie ma szans obliczyć głębokości stosu jeżeli
>będziemy zmieniali wartośc wskaźnika SP programowo. Tak ironizowałem tylko.
kompilator C zasadniczo w ogole nie ma szans obliczyc glebokosci stosu
na etapie kompilacji, chyba zeby tak budowal drzewo zagniezdzen i
sprawdzal rekurencyjnosc.
Moze sprawdzac na etapie wykonania, ale to strata na szybkosci i
kolejny klopot.
Programista ma zadbac o wystarczajacy stos.
J.
-
82. Data: 2011-02-02 11:43:42
Temat: Re: ksišżka o programowniu AVR w C
Od: Michoo <m...@v...pl>
W dniu 02.02.2011 12:28, J.F. pisze:
> On Wed, 2 Feb 2011 12:09:49 +0100, 4CX250 wrote:
>> Uśmieszków moich nie dostrzegłeś :)
>> Chodziło mi tylko o to że gcc nie ma szans obliczyć głębokości stosu jeżeli
>> będziemy zmieniali wartośc wskaźnika SP programowo. Tak ironizowałem tylko.
Kompilator zna początek stosu i zna jego koniec, więc oczywiście, że się
przystosuje do zmiany rejestru i nawet będzie działać kontrola
głębokości stosu, jeżeli ją wkompilujemy. A do kontroli "za darmo" można
użyć pułapki sprzętowej o ile procesor obsługuje.
>
> kompilator C zasadniczo w ogole nie ma szans obliczyc glebokosci stosu
> na etapie kompilacji, chyba zeby tak budowal drzewo zagniezdzen i
> sprawdzal rekurencyjnosc.
Problem stopu jest nierozwiązywalny ;)
--
Pozdrawiam
Michoo
-
83. Data: 2011-02-02 11:48:49
Temat: Re: ksišżka o programowniu AVR w C
Od: "4CX250" <taunusmtv@poćta.łonet.pl>
Użytkownik "J.F." <j...@p...onet.pl> napisał w wiadomości
news:eqfik69es6elhiqkbt9rdjqjb1j5aoueno@4ax.com...
> kompilator C zasadniczo w ogole nie ma szans obliczyc glebokosci stosu
> na etapie kompilacji, chyba zeby tak budowal drzewo zagniezdzen i
> sprawdzal rekurencyjnosc.
Nie znam gcc, uczę się dopiero.
"Kompilator" kodu dla 8085 jaki napisałem dawno temu przelatywał przez
listing asm 2 razy gdyż za jednym razem nie był w stanie sprawdzić
wszystkich etykiet skoków i przypisać adresy do odpowiednich ich wywołań.
Więc program podczas tłumaczenia zapisywał sobie kolejne wywoływane etykiety
skoków na własnym coś jakby stosie i przy drugim przebiegu jeśli trzeba było
uzupełniał brakujące adresy etykiet etykiet przy skokach. Ilość kolejnych
odwołań do etykiet była więc ilością adresów odkładanych na stos gdyby
jeszcze uwzględnić polecenia push i pop to można by było normalnie wyliczać
głębokośc stosu ale nadal nie dałoby się zrobić tego jeżeli wskaźnik stosu
zmieniany miałby być programowo.
> Programista ma zadbac o wystarczajacy stos.
O właśnie. Dlatego zawsze jak pisałem w ASM to sobie robiłem arkusz pod
tytułem mapa pamięci który na bieżąco aktualizowałem.
Marek
-
84. Data: 2011-02-02 17:45:56
Temat: Re: książka o programowniu AVR w C
Od: janusz_kk1 <j...@o...pl>
Dnia 02-02-2011 o 12:28:27 Michoo <m...@v...pl> napisał(a):
> W dniu 02.02.2011 11:07, janusz_kk1 pisze:
>> Trzeci moduł jest dostosowany do listy rozkazów procka dzięki czemu GCC
>> jest uniwersalne
>> i kompiluje od 51 po pic-a.
> Pudło. Ich budowa jest tak 'inna', że na te architektury nie ma portu
> gcc.
No nie do końca, akurat pomyliłem procki bo na małe jest SDCC,
ale poczytaj sobie budowę GCC
http://pl.wikipedia.org/wiki/GNU_Compiler_Collection
i zobaczysz jaki wachlarz procków obsługuje i podział zadań pomiędzy
moduły,
tutaj pisząc z pamięci niewiele się pomyliłem.
A tutaj jest na małe procki:
http://sdcc.sourceforge.net/
>
> Dzięki temu mogłem poznać rozkosze używania SDCC - np operuje się na
> liczbach zmiennoprzecinkowych, kod się kompiluje. Dopiero po
> sformatowaniu go przez printf i wyświetleniu na LCD widać napis
> informujący o braku jednostki zmiennoprzecinkowej. ;)
A dołączyłeś odpowiednią biblotekę?
--
Pozdr
JanuszK
-
85. Data: 2011-02-02 17:47:09
Temat: Re: książka o programowniu AVR w C
Od: janusz_kk1 <j...@o...pl>
Dnia 02-02-2011 o 12:09:49 4CX250 <t...@p...3onet.pl> napisał(a):
> Użytkownik "janusz_kk1" <j...@o...pl> napisał w wiadomości
> news:op.vp9s140z1cvm6g@jk-laptop...
>
>> A robił on coś więcej? bo jak nie to był tylko translatorem.
>> Poczytaj jak jest zbudowany GCC, IMHO on ma trzy moduły,analizator
>> składni i prekompilator,
>> właściwy kompilator z optymalizacją i moduł translacji na kod maszynowy
>> z linkierem.
>> Trzeci moduł jest dostosowany do listy rozkazów procka dzięki czemu GCC
>> jest uniwersalne
>> i kompiluje od 51 po pic-a. To Tak w dużym skrócie.
>
> Uśmieszków moich nie dostrzegłeś :)
> Chodziło mi tylko o to że gcc nie ma szans obliczyć głębokości stosu
> jeżeli będziemy zmieniali wartośc wskaźnika SP programowo. Tak
> ironizowałem tylko.
Ok :)
--
Pozdr
JanuszK
-
86. Data: 2011-02-02 18:08:15
Temat: Re: książka o programowniu AVR w C
Od: Michoo <m...@v...pl>
W dniu 02.02.2011 18:45, janusz_kk1 pisze:
> Dnia 02-02-2011 o 12:28:27 Michoo <m...@v...pl> napisał(a):
>
>> W dniu 02.02.2011 11:07, janusz_kk1 pisze:
>>> Trzeci moduł jest dostosowany do listy rozkazów procka dzięki czemu GCC
>>> jest uniwersalne
>>> i kompiluje od 51 po pic-a.
>> Pudło. Ich budowa jest tak 'inna', że na te architektury nie ma portu
>> gcc.
> No nie do końca, akurat pomyliłem procki bo na małe jest SDCC,
> ale poczytaj sobie budowę GCC
Nie muszę czytać bo ją znam.
> http://pl.wikipedia.org/wiki/GNU_Compiler_Collection
> i zobaczysz jaki wachlarz procków obsługuje i podział zadań pomiędzy
> moduły,
> tutaj pisząc z pamięci niewiele się pomyliłem.
Wiele się pomyliłeś - gcc nie obsługuje i nie będzie obsługiwać ani 51,
ani PIC (nie mówimy o tych nowych, 16 bitowych, w który zapomniano o
takich tworach jak sprzętowy stos) właśnie ze względu na to, że ma taką
a nie inną budowę. Dodanie obsługi wymagałoby nie tylko utworzenia
backendu (optymalizującego platform-specific i generującego kod
maszynowy), ale napisanie na nowo właściwie wszystkiego poza parserem.
>
> A tutaj jest na małe procki:
> http://sdcc.sourceforge.net/
Niestety bardzo ubogi ten kompilator (translator bardziej). I nie
kompiluje C++.
>> Dzięki temu mogłem poznać rozkosze używania SDCC - np operuje się na
>> liczbach zmiennoprzecinkowych, kod się kompiluje. Dopiero po
>> sformatowaniu go przez printf i wyświetleniu na LCD widać napis
>> informujący o braku jednostki zmiennoprzecinkowej. ;)
> A dołączyłeś odpowiednią biblotekę?
Raczej tak. Inaczej powinien się nie skompilować/nie zlinkować.
--
Pozdrawiam
Michoo
-
87. Data: 2011-02-02 18:56:52
Temat: Re: książka o programowniu AVR w C
Od: "identifikator: 20040501" <N...@g...pl>
nie wiem czy nie podpadnę, ale zapytam: czy coś na temat książki się dowiem?
w tym mega wątku...
-
88. Data: 2011-02-02 20:43:12
Temat: Re: książka o programowniu AVR w C
Od: "Marcin Wasilewski" <j...@a...pl>
Użytkownik "identifikator: 20040501" <N...@g...pl> napisał w
wiadomości news:iic9qp$i5o$1@mx1.internetia.pl...
> nie wiem czy nie podpadnę, ale zapytam: czy coś na temat książki się
> dowiem? w tym mega wątku...
A co chcesz wiedzieć? Książka wczoraj do mnie dotarła, wg mnie całkiem fajna
pozycja. Poza tym przecież masz w tamtej aukcji pdf z dostępnym rozdziałem i
spisem treści, wg mnie na podstawie tego całkiem sporo można powiedzieć na
temat tej książki.
W odróżnieniu od "Mikrokontrolery AVR programowanie w języku C"
A.Witkowskiego nie stanowi ona suchego opisu opcji kompilatora, rodzaju
zmiennych, ale pokazuje jak rozwiązywać praktyczne problemy.
Czy będziesz zadowolony? No cóż zależy jaki jest twój stopień zaawansowania.
Jeśli na AVR w C napisałeś już z 10 projektów, to obejdziesz sę bez tej
książki.
Jeśli dotąd korzystałeś z gotowych bibliotek i nie zhańbiłeś się
bezpośrednią obsługą pryferii też chyba będziesz zadowolony.
-
89. Data: 2011-02-03 12:06:27
Temat: Re: ksišżka o programowniu AVR w C
Od: JDX <j...@o...pl>
On 2011-02-02 12:43, Michoo wrote:
[.....]
> Kompilator zna początek stosu i zna jego koniec
Także początek i koniec stosu dynamicznie tworzonych wątków/zadań? :-)
-
90. Data: 2011-02-03 12:18:08
Temat: Re: książka o programowniu AVR w C
Od: "identifikator: 20040501" <N...@g...pl>
> bezpośrednią obsługą pryferii też chyba będziesz zadowolony.
o to mi chodziło, dzięki.