C i mikroprocesory

Loading thread data ...
Reply to
Krzysztof Madziar

Użytkownik ogi napisał:

Lepiej zainteresuj sie asemblerem, pod mikrokontrolery "prawdziwych" programów nie pisze sie w językach wysokiego poziomu (szybkość,stabilność,wielkość). Język C ma jedynie sens w "układach" opartych na systemie operacyjnym. Pozatym według mnie lepiej się uczyć C jak sie zna asembler. C jest "dziwnym" ale i najlepszym jezykiem programowania wysokiego poziomu. Dziwnym, chodź to może złe określenie ponieważ pozwala programiście prawie na wszystko (co ma pewne plusy jeżeli się wie co robi) przez co powstają czesto bardzo trudno wykrywalne błedy, w przeciwieństwie do pascla itp.

Pozdrawiam Maksymilian Dutka #GG: 1493163

Reply to
Max

No przede wszystkim zalatw sobie jakis kompilator C. Dla poczatkujacego najlepszy IMHO jest i pozostanie (mimo swych ograniczen) dosowy kompilator Borland C++ 3.1

B.

Reply to
B

To stwierdzenie ma sens tylko dla bardzo malych mikrokontrolerow gdzie ograniczone zasoby nie pozwalaja na wygodne zaimplementowanie C. Duzych mikrokontrolerow nie programuje sie w assemblerze z zalozenia. Assembler ma tylko role pomocnicza.

Co ty nie powiesz. Przy programowaniu sprzetu jezyk C zawsze ma sens (choc istnieja nieliczne wyjatki).

Mow co chcesz, ale najwazniejszy k..., jest debugger.

B.

Reply to
B

Wysyłając taki oto zestaw znaków dnia 2004-05-14 23:25 B nakarmił(a) stado głodnych newsserwerów:

Hmm... Pisać w Borlandzie C++ na mikrokontrolery??? To jak strzelać z armaty do muchy ;-)

Reply to
badworm

On Fri, 14 May 2004 22:49:45 +0200, Max snipped-for-privacy@dioda.sytes.net> wrote: [.....]

Może lepiej nie pisz takich rzeczy bo ktoś przez przypadek weźmie to na poważnie.

BTW. Ja tam słyszałem że "prawdziwe" programy (lotnictwo, wojsko) pisze się w ADA. To taki język wysokiego poziomu troszeczkę podobny do Pascala.

Regards, /J.D.

Reply to
Jan Dubiec

Nazywanie C jezykiem wysokiego poziomu jest kontrowersyjne - jest to raczej taki 'przenosny assembler' - wiekszosc konstrukcji C jest tlumaczona na pojedyncze lub kilka instrukcji assemblera.

Niedawno byl watek o niezgodnosci jezyka C z architektura niektorych prockow, tych z rozdzielona przestrzenia danych i programu. No i musi byc dostepny sensownej wielkosci stos. Ale i tak zwykle jakies wstawki a assemblerze sa niezbedne - inaczej nie da sie skonfigurowac procka (przerwania, jakies tryby, flagi w CPU itp).

Krzysiek Rudnik

Reply to
Krzysztof Rudnik

Dawno dawno temu Pentagon powiedzial ze nie kupi innego programu niz w Adzie. Od tego czasu minelo juz sporo lat .. i wykladowcy emigrujacy do ameryki narzekaja ze jak usiluja wprowadzic Ade jako jezyk cwiczeniowy, to studenci przynosza gazete i prosza o wskazanie jednego ogloszenia o prace "znajomosc Ady pozadana".

I w sumie niewiele rozny od C, PL/1, Fortranu czy innych. Mial dwie zalety:

- programista specyfikuje zmienne dokladnie - podajac zakres i dokladnosc, wiec nie ma problemu przy przenoszeniu "a na nowej maszynce int nie ma 32 bity, program mi nie dziala, buuu",

- mial oficjalnie wbudowane mechanizmy mielozadaniowosci, choc mowiac szczerze takie sobie..

J.

Reply to
J.F.
Reply to
invalid unparseable

Użytkownik B napisał:

Zgadzam się z tym ze w C jest wygodniej ale znacznie sie traci na szybkości programu. Po co pisać coś w C i kupować droższy mikrokontroler jak można napisać to samo w asm i zaoszczędzić pieniędzy.

To dlaczego Microsoft swoje sterowniki robi w asm. ? (zobacz sobie do DDK dla win98, dla win2000 juz są w C :( ), jądro linux-a też jest częściowo w asm. Dlatego pisze że podsystem operacyjny jest lepiej w C gdyż jest wtedy większa przenośność kodu (na inne systemy), poza tym jeżeli się zmienia system operacyjny (typ sprzętu) to nie trzeba się bawić w naukę odwołań do systemu/sprzętu. Jeżeli się pisze w C pod mikro. to i tak trzeba wiedzieć wszystko o sprzęcie, bo nie ma niczego (systemu operacyjnego) co by "oddaliło" programistę od sprzętu (no może gdyby był jakiś dobry kompilator C na mikro. to zapewniał by cos takiego w jakimś tam stopniu).

Tu się kłania znajomość asemblera, zapewne powiesz że przecież debugowanie odbywa sie w C, ale niestety to nie zawsze wystarcza czasem trzeba "dłubać" w asm.

Pozdrowienia Maksymilian Dutka

Reply to
Max

To z wieksza szybkoscia asma to zaszlosci - kiedys uruchamiajac program startowy na MCF5407, zeby sprawdzic czy program dochodzi do danego miejsca wstawilem tam prosciutka petle wysylajaca sygnal prostokatny na jedno wyjscie. Jak robilem to czesci, napisanej w asmie, petelka byla w asmie, jak juz ta czesc uruchomilem, pisalem w C. Troche mnie zaskoczylo, ze w tym drugim wypadku na oscyloskopie dostalem wieksza czestotliwosc. Zeby w asmie napisac tak efektywny kod jak daje dobry kompilator trzeba sie niezle naglowkowac. Nie ma to sensu, jesli tego asma jest wiecej niz kilkadziesiat linii.

Bo tam trzeba uzyc pewnych elementow, ktorych nie ma w C - przerwania, IO, zarzadzanie cache'em, i inne specyficzne dla procesorow instrukcje.

Krzysiek Rudnik

Reply to
Krzysztof Rudnik

On Sat, 15 May 2004 12:21:44 +0200, Max snipped-for-privacy@dioda.sytes.net> wrote: [.....]

To nie jest zawsze prawdą. W szczególności w przypadku bardziej zaawansowanych procesorów/kontrolerów. Np. takich wyposażonych w cache.

Dłuższy czas poświęcony na rzeźbienie w assemblerze też kosztuje. Późniejsze utrzymanie oprogramowania również. A i końcowy efekt niekoniecznie musi być lepszy.

Jak sam zauważyłeś już nie pisze. Win98? To ktoś jeszcze tego używa? :-)

Formalnie masz rację, ale ta część napisana w assemblerze to jest dla i386 jakieś 0.5% (około 25 plików .S na 5000 plików .c). No bo przecież w każdym systemie operacyjnym jest jakaś część zależna od sprzętu.

Jak to nie ma jak jest. Przecież są do kupienia/ściągnięcia komercyjne/darmowe OS-y na różne uC. Chyba tylko na PIC12 i jakieś czerobitowce nic nie ma. :-)

Regards, /J.D.

Reply to
Jan Dubiec

On Sat, 15 May 2004 15:36:45 +0200, Krzysztof Rudnik snipped-for-privacy@kki.net.pl> wrote: [.....]

Ja kiedyś z nudów napisałem (a w zasadzie przetłumaczyłem z C na assemblera) naiwną implementację RC4 taka jak np. ta: ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc4/rc4.c Okazało się że mój kod w asm na PIII chodzi prawie 8 razy wolniej niż w/w kod w C skompilowany gcc -O3. Już nawet nie porównywałem tego z dobrą implementacją RC4 w C, np. taką jak w OpenSSL. :-)

Regards, /J.D.

Reply to
Jan Dubiec

Ale wygląda na to że nadal aktywnie używa się Ady.

Czy masz może na myśli A.L.? :-)

Może powinni zacząć poszukiwania od listy firm które używają Ady, np. takiej:

formatting link
:-)

Regards, /J.D.

Reply to
Jan Dubiec

Przy P3 to zaczyna byc mozliwe - fachowcy wiedza jak kompilowac zeby wykorzystac optymalnie te wszystkie cache, kolejki, przeploty itp. A przecietny programista nie wie.

Ale .. 8 razy ? Musiales cos sp* zdrowo ..

A to jest calkiem osobna sprawa, bo pewnie calkiem inny program ..

J.

Reply to
J.F.
Reply to
Piotr Wyderski
Reply to
Piotr Wyderski

To prawda, naprawde zdrowo. Kiedys napisalem prosty, nieoptymalizujacy kompilator wlasnego jezyka programowania

-- produkowal kod srednio 3 razy wolniejszy niz najlepszy dostepny wowczas kompilator optymalizujacy. Skoro wiec ktos piszac _w asemblerze_ stworzyl kod 2,5 raza wolniejszy niz robi moj kompilator, to, hehe, pogratulowac... ;-)))

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.