-
Data: 2014-04-05 10:02:24
Temat: Odp: C vs. ASM na przykładzie PIC18F
Od: Sylwester Łazar <i...@a...pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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.
Następne wpisy z tego wątku
- 05.04.14 10:10 Marek
- 05.04.14 10:15 Marek
- 05.04.14 10:25 Marek
- 05.04.14 10:32 Marek
- 05.04.14 11:01 Sylwester Łazar
- 05.04.14 11:04 Marek
- 05.04.14 11:10 Sylwester Łazar
- 05.04.14 11:10 jacek pozniak
- 05.04.14 11:34 Michał Lankosz
- 05.04.14 11:43 jacek pozniak
- 05.04.14 11:49 Sylwester Łazar
- 05.04.14 12:28 Marek
- 05.04.14 12:42 Sylwester Łazar
- 05.04.14 12:42 jacek pozniak
- 05.04.14 12:48 Sylwester Łazar
Najnowsze wątki z tej grupy
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
- Opis produktu z Aliexpress
- No proszę, a śmialiście się z hindusów.
- Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800
- karta parkingowa
- Wl/Wyl (On/Off) bialy/niebieski
Najnowsze wątki
- 2024-12-03 Tymoteusz Sz.
- 2024-12-03 Re: Prezydent ułaskawia: Prezydent USA Biden (D) ułaskawia syna własnego
- 2024-12-03 Re: Tani dodatkowy sim do smartwacha
- 2024-12-03 Wróblewo => Analityk finansowy <=
- 2024-12-03 Praktyczny test GPS...
- 2024-12-02 Tak się sprzedają elektryczne woldzwageny ;-)
- 2024-12-02 Akumulator do Hyundai
- 2024-12-02 Olsztyn => Sales Specialist <=
- 2024-12-02 Poznań => Technical Artist <=
- 2024-12-02 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-02 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-02 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-02 Białystok => Delphi Programmer <=
- 2024-12-02 Poznań => Dyspozytor Międzynarodowy <=
- 2024-12-02 Szczecin => Key Account Manager (ERP) <=