eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaksiążka o programowniu AVR w CRe: książka o programowniu AVR w C
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl
    !not-for-mail
    From: "Marcin Wasilewski" <j...@a...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: książka o programowniu AVR w C
    Date: Mon, 31 Jan 2011 20:39:04 +0100
    Organization: CI TASK http://www.task.gda.pl/
    Lines: 42
    Message-ID: <ii734d$kr$1@news.task.gda.pl>
    References: <ihpvpu$mvg$1@mx1.internetia.pl> <4...@i...pl>
    <4d467cd6$1@news.home.net.pl> <ii61g5$af2$1@news.task.gda.pl>
    <ii6612$1o6$1@news.onet.pl> <ii6fuk$3re$1@news.task.gda.pl>
    <ii6h1t$djb$1@news.onet.pl>
    NNTP-Posting-Host: host-81-190-189-35.kwidzyn.mm.pl
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Trace: news.task.gda.pl 1296502733 667 81.190.189.35 (31 Jan 2011 19:38:53 GMT)
    X-Complaints-To: a...@n...task.gda.pl
    NNTP-Posting-Date: Mon, 31 Jan 2011 19:38:53 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5994
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:603908
    [ ukryj nagłówki ]

    Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości
    news:ii6h1t$djb$1@news.onet.pl...

    >> a) co jest zrzucane na stos i dlaczego w takiej kolejności,
    > Jakie to ma znaczenie w kodzie C?

    Takie, że jak się pisze w C na scalaki typu Tiny13, które mają "aż" 64
    bajty RAMu to się można zdziwić, jaką sieczkę odwala (a raczej odkłada na
    stos) kompilator C wchodząc w przerwanie. A zasada jest prosta zrzuca się na
    stos SR i używane w przerwaniu rejestry, a nie wszystko co się da na zapas
    jak robi to kompilator C.

    > Chyba, że się operuje na bitach... Poza tym jest to okropny styl pisania -
    > komunikację z przerwaniami zawsze lepiej objąć w ATOMIC, bo inaczej łatwo
    > o prosty błąd przy późniejszych przeróbkach kodu. (A koszt zazwyczaj
    > pomijalny - 2 cykle +1 cykl opóźnienia.)

    Tak, szczególnie jak masz np. 1K Flash-a i 64B ramu :)
    Ale wtedy co robi programista w C? Zamiast ATtiny13, ładuje się ATtiny2313 i
    problem rozwiązany.

    >> g) że znacznie lepiej mnożyć/dzielić przez 2, 4, 8 itd., niż przez 10.
    > Dlaczego? Jeżeli procesor ma układ sprzętowego mnożenia to jest to jeden
    > cykl różnicy. Dzielenie przez stałą sensowny kompilator zamienia na
    > mnożenie.

    Po pierwsze zajmuje 2 takty samo mnożenie, ale jego wynik ląduje w
    rejestrach R0/R1, co powoduje, że tracimy nast. kilka taktów aby je stamtąd
    wydobyć. A przypominam, że R0-R15 są rejestrami w pewnym stopniu
    upośledzonymi i nie wszystkie instrukcje dostępu do nich działają (np. ldi).
    Rolowanie zajmuje jednak mniej.

    >> I wiele, wiele innych rzeczy o których w tej chwili nie pamiętam.
    > I wiele, wiele innych rzeczy o których programista C _nie musi_ pamiętać.

    Do momentu jak mu się program "zesra", bo stos wlezie na zmienne.

    Podsumowując - pisanie w C wymaga sporo mniej czasu, jednak pewne rzeczy
    dostępne w asm od ręki C ma wyjątkowo upierdliwie rozwiązane (np. dostęp do
    zmiennych w pamięci FLASH). Poza tym, jak ktoś zna assembler, to sobie ze
    wstawkami w newralgicznych miejscach poradzi.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: