Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next
J.F.
Guest
Wed Feb 02, 2011 11:41 am
On Wed, 02 Feb 2011 11:07:06 +0100, janusz_kk1 wrote:
Quote:
Wiesz co, nie wiedziałem... Nawet nie wiedziałem że w 1991 roku w
paskalu napisałem sobie translator na 8085
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.
Architekture musisz uwzglednic juz na etapie kompilacji.
I optymalizacji tez.
J.
4CX250
Guest
Wed Feb 02, 2011 12:09 pm
Użytkownik "janusz_kk1" <janusz_kk@o2.pl> napisał w wiadomości
news:op.vp9s140z1cvm6g@jk-laptop...
Quote:
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.
Marek
4CX250
Guest
Wed Feb 02, 2011 12:22 pm
Użytkownik "J.F." <jfox_xnospamx@poczta.onet.pl> napisał w wiadomości
news:t3dik6lu6hjn6doh73rcl94j8vs48eol8l@4ax.com...
Quote:
Architekture musisz uwzglednic juz na etapie kompilacji.
I optymalizacji tez.
I tego nie da się nijak programowo załatwić choćby nie wiadomo jaki był
uniwersalny ten gcc.
Wystarczy też małe potknięcie programisty np. włączenie fuse bitu
kompatybilności 103 w atmega 128 i żaden gcc nie wykryje błędu. Okaże się że
pamięć za krótka i stos mamy na zmiennych i dodatkowo nie ma fiuczerów które
sa tylko w 128 a które chce nasz program wykorzystać.
Marek
J.F.
Guest
Wed Feb 02, 2011 12:25 pm
On Wed, 2 Feb 2011 12:22:00 +0100, 4CX250 wrote:
Quote:
Użytkownik "J.F." <jfox_xnospamx@poczta.onet.pl> napisał w wiadomości
Architekture musisz uwzglednic juz na etapie kompilacji.
I optymalizacji tez.
I tego nie da się nijak programowo załatwić choćby nie wiadomo jaki był
uniwersalny ten gcc.
Java i .Net jakby to obchodza.
Quote:
Wystarczy też małe potknięcie programisty np. włączenie fuse bitu
kompatybilności 103 w atmega 128 i żaden gcc nie wykryje błędu. Okaże się że
pamięć za krótka i stos mamy na zmiennych i dodatkowo nie ma fiuczerów które
sa tylko w 128 a które chce nasz program wykorzystać.
Mozna sie upierac ze C powinien to sobie ustawiac sam :-)
J.
Michoo
Guest
Wed Feb 02, 2011 12:28 pm
W dniu 02.02.2011 11:07, janusz_kk1 pisze:
Quote:
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.
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. ;)
--
Pozdrawiam
Michoo
J.F.
Guest
Wed Feb 02, 2011 12:28 pm
On Wed, 2 Feb 2011 12:09:49 +0100, 4CX250 wrote:
Quote:
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.
Michoo
Guest
Wed Feb 02, 2011 12:43 pm
W dniu 02.02.2011 12:28, J.F. pisze:
Quote:
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.
Quote:
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
4CX250
Guest
Wed Feb 02, 2011 12:48 pm
Użytkownik "J.F." <jfox_xnospamx@poczta.onet.pl> napisał w wiadomości
news:eqfik69es6elhiqkbt9rdjqjb1j5aoueno@4ax.com...
Quote:
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.
Quote:
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
janusz_kk1
Guest
Wed Feb 02, 2011 6:45 pm
Dnia 02-02-2011 o 12:28:27 Michoo <michoo_news@vp.pl> napisał(a):
Quote:
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/
Quote:
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
janusz_kk1
Guest
Wed Feb 02, 2011 6:47 pm
Dnia 02-02-2011 o 12:09:49 4CX250 <taunusmtv@pota.3onet.pl> napisał(a):
Quote:
Użytkownik "janusz_kk1" <janusz_kk@o2.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
Michoo
Guest
Wed Feb 02, 2011 7:08 pm
W dniu 02.02.2011 18:45, janusz_kk1 pisze:
Quote:
Dnia 02-02-2011 o 12:28:27 Michoo <michoo_news@vp.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.
Quote:
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.
Quote:
kompiluje C++.
Quote:
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
identifikator: 20040501
Guest
Wed Feb 02, 2011 7:56 pm
nie wiem czy nie podpadnę, ale zapytam: czy coś na temat książki się dowiem?
w tym mega wątku...
Marcin Wasilewski
Guest
Wed Feb 02, 2011 9:43 pm
Użytkownik "identifikator: 20040501" <NOSPAMtestowanije@go2.pl> napisał w
wiadomości news:iic9qp$i5o$1@mx1.internetia.pl...
Quote:
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.
JDX
Guest
Thu Feb 03, 2011 1:06 pm
On 2011-02-02 12:43, Michoo wrote:
[.....]
Quote:
Kompilator zna początek stosu i zna jego koniec
Także początek i koniec stosu dynamicznie tworzonych wątków/zadań?

identifikator: 20040501
Guest
Thu Feb 03, 2011 1:18 pm
Quote:
bezpośrednią obsługą pryferii też chyba będziesz zadowolony.
o to mi chodziło, dzięki.
Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next