eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaC vs. ASM na przykładzie PIC18FOdp: C vs. ASM na przykładzie PIC18F
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
    .pl!news.nask.org.pl!news.internetia.pl!not-for-mail
    From: Sylwester Łazar <i...@a...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Odp: C vs. ASM na przykładzie PIC18F
    Date: Sat, 5 Apr 2014 10:02:24 +0200
    Organization: Netia S.A.
    Lines: 73
    Message-ID: <lhoe4u$k69$1@mx1.internetia.pl>
    References: <lhntl8$u3a$1@mx1.internetia.pl> <lho1fp$vdg$1@node2.news.atman.pl>
    NNTP-Posting-Host: 77-253-141-36.adsl.inetia.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset="iso-8859-2"
    Content-Transfer-Encoding: 8bit
    X-Trace: mx1.internetia.pl 1396685790 20681 77.253.141.36 (5 Apr 2014 08:16:30 GMT)
    X-Complaints-To: a...@i...pl
    NNTP-Posting-Date: Sat, 5 Apr 2014 08:16:30 +0000 (UTC)
    X-Notice1: This post has been postprocessed on the news.internetia.pl server.
    X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200
    X-Tech-Contact: u...@i...pl
    X-Newsreader: Microsoft Outlook Express 5.00.2615.200
    X-Priority: 3
    X-Server-Info: http://www.internetia.pl/
    X-MSMail-Priority: Normal
    X-Notice2: Subject line has been filtered and any Odp: strings removed.
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:662310
    [ ukryj nagłówki ]

    > > Napisałem procedurę w ASM i w C.
    > > Oczywiście obie działają poprawnie.
    > [ciach]
    >
    > Ja bym się aż tak bardzo nie ekscytował uzyskanymi wynikami.
    Spokojnie. Wcale się nie ekscytuje. Przecież znałem z góry wynik.
    Nie spodziewałem się tylko, że mechanika, jak na "głupie" układanie kody,
    osiągnie nawet takie wyniki. Za naszego życia maszyna nie będzie lepsza od
    człowieka.


    > CPU procesora PIC18F2320 jest 16 bitowe
    No tak w połowie, bym rzekł.
    Jeśli mówisz o adresowaniu, no to rejestry FSRxH:L mają tylko 12-bitów,
    więc do 4096 może i procedura się nie zmieni zbyt wiele po kompilacji.
    O 100, może więcej instrukcji?
    Spójrz na rysunek adresowania pośredniego:
    ww1.microchip.com/downloads/en/DeviceDoc/39605b.pdf
    strona 58AR (Acrobat Reader)/56DS.

    Jak zapewne zauważyłeś, podałem w rozważaniach liczbę 5000.
    Dla 5000 to naprawdę może kompilator przygotuje coś 16 bitowego.
    Wtedy obawiam się, będzie dopiero tragedia.
    A szyna danych jest z kolei 8-bitowa.
    Jednak jeśli czytać ją z tablicy ROM to wtedy jest dopiero 16-bitowy procek.
    Trudno tak rzec jaki on właściwie jest.

    Na stronie 55(AC)/55DS Microchip podaje świetny przykład kasowania pamięci.
    Dlaczego sam go nie stosuje?
    Przecież można by go lepiej adaptować, nawet na kasowanie 16-bitowe.
    Example 5-5
    LFSR FSR0 ,0x100 ;
    NEXT
    CLRF POSTINC0 ; Clear INDF register then inc pointer
    BTFSS FSR0H, 1 ; All done with Bank1?
    GOTO NEXT ; NO, clear next
    CONTINUE ; YES,

    Oczywiście jest tutaj sprawdzany tylko przeniesienie z bitu 8 na 7 FSR,
    ale przecież kompilator mógłby sobie poukładać w pamięci tak zmienne, aby
    ostatnia kończyła się
    na adresie modulo 256.
    Przynajmniej do dwóch pętli w tym maleństwie dałoby się tak zrobić.
    Ale ja też tak nie zrobiłem u siebie, a wyszło mi to krótsze.

    > a Ty napisałeś program
    > z pomieszaniem adresowania 8 i 16 bitowego.
    Sam procesor juz pomieszany. Robiłem co mogłem.
    Ja to nawet zrobiłem to 7-bitowo.

    > Nic dziwnego, że
    > kompilator dodał instrukcje konwersji typów. Bądż uprzejmy
    > przepisać ten program na liczby i adresowanie 16 bitowe
    > i dopiero wtedy porównać uzyskane rezultaty.
    Taki szkielet. Nie widzę problemu (poza RAMem), aby go rozbudować.
    Ale to będzie walka mojej głowy z głupim metakompilatorem.
    Wynik obawiam się będzie jeszcze bardziej przerażający.
    Myślę, że Ty z łatwością byś sobie też poradził.

    > Oczywiście optymalizacja w C powinna być dla "release" a nie "debug".
    Była ALL w drugim etapie.
    Nie bawiłem się selektywnym klikaniem na checkboxy,
    bo w totolotka nie gram :-)
    Jednak nie sądzę, że przy jakiejś kombinacji da się coś uzyskać sensownego.
    > Współcześnie sprzedawane kompilatory są często generowane przez
    > metakompilatory, gdyż koszta zabiłyby producenta oprogramowania.
    > K.
    A tak zabijają nas kosztami:-)
    Myślę, że wiesz, że musiałem spędzić wielokrotnie więcej godzin nad ASM.
    W tym C to bajka - tylko kilka linijek :-)

    S.

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: