-
Data: 2014-04-05 23:19:19
Temat: Odp: Odp: C vs. ASM na przykładzie PIC18F
Od: Sylwester Łazar <i...@a...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]>> W ATMEGA są zdaje się instrukcje 16-bitowe.
>tak
>> W takim razie oznacza to, że jest <66 instrukcji?
>65
Dzięki. Dobra robota.
Podoba mi się ten ATMEGA32 (jak na 8-bitowca)
Ma fajne instrukcje:
1) MOVW Rd, Rr Copy Register Word Rd+1:Rd <- Rr+1:Rr
w jednym cyklu!
3x jej używają w naszym programie testowym. Nie dziwię się. Tego brakuje w
PIC.
2) LDI Rd, K Load Immediate Rd <- K
14x jej używają
Też w jednym cyklu do dowolnego rejestru. Tez brakuje w PICu. Wszystko przez
WREG trzeba przenosić.
3)CPI Rd,K Compare Register with Immediate Rd - K
3x użyta
Też w jednym cyklu. Też brakuje w PICu.
4) CPC Rd,Rr Compare with Carry Rd - Rr - C
3x użyta.
Też występuje w jednym cyklu.
Zdaje się, że tak fajnie można porównać w 4 instrukcjach 2bajtową liczbę.
ldi r26, 0x00 ; 0
cpi r30, 0x86 ; 134
cpc r31, r26
brne .-18 ; 0xbe <zlicz+0x2c>
Szkoda tylko, że nie ma takiego porównania cpc ze stałą i tutaj musiał
załadować najpierw do r26 zero.
W PIC18 jest CPFSEQ, która ze skokiem wykonuje się w 3 cyklach, ale też
trzeba załadować do w stałą
i też tylko jeden bajt, a nie słowo. Ach te ośmiobitowce :-(
5)MOV Rd, Rr Move Between Registers Rd <- Rr
5x występuje
Też w jednej instrukcji i też fajne.
PIC18 ma MOVFF, ale trwa 2 cykle, czyli identycznie, jak w PIC16
MOVF R1,w
MOVWF R2
tyle, że nie używa w.
----------------------------------
Podsumowując:
1) Kod wygląda dość ciekawie, ale coś mi się zdaje, że można to jeszcze
skrócić przynajmniej do 45 instrukcji z takim zestawem rozkazów.
2) rozkazy korzystające z indeksów trwają zawsze 2 cykle
np.
LD Rd, Z Load Indirect Rd <- (Z)
3) pętla główna sortowania zajmuje aż 34 rozkazy.
8 rozkazów 2 cyklowych
26 rozkazów 1 cyklowych
czyli 26+2*8=26+16=42 cykle
4) Ja mam w ASM na PIC18F 20 instrukcji w pętli.
I tak:
6 wykonujących się w 2 cyklach
14 wykonujących się w 1 cyklu.
Co daje mimo bardziej ubogiej listy rozkazów 14+2*6=14+12=26cykli
W cyklach wychodzi C/ASM= 42/26=1,62
Całkiem nieźle jak na razie. Nawet nie dwukrotna nadbudowa.
5) ATMEGA32 może pracować, jak dobrze wyczytałem @16MHz z czasem jednego
cyklu: Tcy=1/16=62,5ns.
Daje to obieg pętli:
42*62,5=2,625us
Dla PICa 18F2320 @40MHz Tcy=1/40*4=100ns
Daje to obieg pętli:
26*100= 2,6us
I to jest ciekawa sprawa.
==================================================
ATMEGA32 z kompilatorem C (nie wiem jaka wersja?) Avr studio4
Wykonuje tą samą funkcję, którą napisałem w ASM na PIC18 mniej więcej w tym
samym czasie!
Sukces polega zapewne na tym, że ATMEGA32 wydaje się dość zgrabnym
maleństwem,
a kompilator korzysta z listy rozkazów dość logicznie.
Oba procki mają tylko 3 rejestry indeksowe. Jeden więcej byłby w tym
przypadku pomocny.
ATMEGA32 jakieś 12-15 zł
PIC18F2320 jakieś 20 -28 zł
Polecam ATMEGA32 w takim razie, zarówno do pracy w ASM jak i w C.
Choć zaznaczam, że na ATMEGA32 kawałka kodu jeszcze nie napisałem w ASM :-)
Jednak, 8-bitowce to marne są,
więc jeśli już lepiej to takiego 32MX220F032B-50ISP za 8 zł.
==================================================
Uwaga:
Co prawda jeszcze nie mówiłem, że ten mój kod w ASM vs. C ma automatyczne
odliczanie najmniejszej wartości KMIN,
w celu zmniejszenia rozmiaru tablicy zliczającej.
Ale to myślę, że jakieś 5-15% szybkości może zabrać w ASM.
Bardzo dziękuję Janusz.
Podaj proszę jeszcze typ kompilatora, wersję i może jakiegoś linka do tego
AVRSTUDIO i kompilatora (demo?)
Może się komuś przyda.
S.
Następne wpisy z tego wątku
- 06.04.14 00:32 Mario
- 06.04.14 00:36 Marek
- 06.04.14 00:43 Sylwester Łazar
- 06.04.14 00:47 Sylwester Łazar
- 06.04.14 00:53 Sylwester Łazar
- 06.04.14 00:57 Marek
- 06.04.14 01:01 Sylwester Łazar
- 06.04.14 01:06 Marek
- 06.04.14 01:10 Sylwester Łazar
- 06.04.14 02:12 John Smith
- 06.04.14 02:20 John Smith
- 06.04.14 02:38 Sylwester Łazar
- 06.04.14 03:08 John Smith
- 06.04.14 05:09 Pszemol
- 06.04.14 10:49 Sylwester Łazar
Najnowsze wątki z tej grupy
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
- wzmacniacz mocy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
- Hiszpania bez pradu
- amperomierz w plusie
Najnowsze wątki
- 2025-06-16 Re: Płonie 3000 elektryków u wybrzeży Alaski
- 2025-06-16 Re: Tesla z najnowszym FSD potrafi przejechać dziecko i... pojechać dalej.
- 2025-06-15 Re: Kolejny expierd usiłuje wmówić błąd pilota wadliwego Boeinga
- 2025-06-14 Re: Boeing, który rozbił się w Indiach to był latający złom, bez serwisowania [złom,bo,Air,India,v.,złom,bo,Boening]
- 2025-06-14 Re: Boeing, który rozbił się w Indiach to był latający złom, bez serwisowania [złom,bo,Air,India,v.,złom,bo,Boening]
- 2025-06-16 Re: Tesla z najnowszym FSD potrafi przejechać dziecko i... pojechać dalej.
- 2025-06-15 Re: lekarka podjechała pod szpital Fordem Mondeo. Przyjechała tylko na chwilę, aby przekazać panu Sebastianowi obiad. Auto miało automatyczną skrzynię biegów, pani Monika wrzuciła bieg wsteczny, zostawiła auto na chodziei najprawdopodobniej wyszła z auta,
- 2025-06-15 Re: lekarka podjechała pod szpital Fordem Mondeo. Przyjechała tylko na chwilę, aby przekazać panu Sebastianowi obiad. Auto miało automatyczną skrzynię biegów, pani Monika wrzuciła bieg wsteczny, zostawiła auto na chodzie i najprawdopodobniej wyszła z auta
- 2025-06-15 Re: lekarka podjechała pod szpital Fordem Mondeo. Przyjechała tylko na chwilę, aby przekazać panu Sebastianowi obiad. Auto miało automatyczną skrzynię biegów, pani Monika wrzuciła bieg wsteczny, zostawiła auto na chodzie i najprawdopodobniej wyszła z auta
- 2025-06-15 Re: lekarka podjechała pod szpital Fordem Mondeo. Przyjechała tylko na chwilę, aby przekazać panu Sebastianowi obiad. Auto miało automatyczną skrzynię biegów, pani Monika wrzuciła bieg wsteczny, zostawiła auto na chodzie i najprawdopodobniej wyszła z auta
- 2025-06-15 Jaka się wozi tyle ton niestabilnego materiału wybuchowego
- 2025-06-15 Re: Czy Trump wygrałby z Bidenem jakby mu mecenas Giertych protesty wyborcze pisał?
- 2025-06-14 Warszawa => Senior Account Manager <=
- 2025-06-14 Warszawa => Senior C++ Developer (analiza numeryczna i modelowanie) <=
- 2025-06-13 "Wśród uczestników [tajnych obrad Grupy Bilderberg - przyp JMJ] znajdujemy szefa MSZ Polski Radosława Sikorskiego oraz jego żonę Anne Applebaum."