-
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: Odp: C vs. ASM na przykładzie PIC18F
Date: Sat, 5 Apr 2014 23:19:19 +0200
Organization: Netia S.A.
Lines: 96
Message-ID: <lhpsr5$gbm$1@mx1.internetia.pl>
References: <lhntl8$u3a$1@mx1.internetia.pl><533fc888$0$2155$6...@n...neostrada.
pl> <op.xduo4pf8n0u1o8@moj><lhpasi$k7d$1@mx1.internetia.pl>
<op.xdux200fn0u1o8@moj>
NNTP-Posting-Host: 77-253-141-36.adsl.inetia.pl
Mime-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Trace: mx1.internetia.pl 1396733605 16758 77.253.141.36 (5 Apr 2014 21:33:25 GMT)
X-Complaints-To: a...@i...pl
NNTP-Posting-Date: Sat, 5 Apr 2014 21:33:25 +0000 (UTC)
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
Xref: news-archive.icm.edu.pl pl.misc.elektronika:662378
[ ukryj 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
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- 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
Najnowsze wątki
- 2025-06-19 Gdynia => Sales Executive / KAM <=
- 2025-06-19 Warszawa => IT Business Analyst (projects in the telco sector) <=
- 2025-06-19 Lublin => Programista Delphi <=
- 2025-06-19 Warszawa => Scrum Master <=
- 2025-06-19 Warszawa => Solution Architect <=
- 2025-06-19 Warszawa => Software Solution Architect <=
- 2025-06-19 Zakrzewo => Konsultant SAP HCM <=
- 2025-06-19 Zakrzewo => SAP HCM Consultant <=
- 2025-06-19 Poznań => SAP HCR Consultant <=
- 2025-06-19 6,756,000 car crashes in the United States in 2019 with 36,096 fatalities.
- 2025-06-19 6,756,000 car crashes in the United States in 2019 with 36,096 fatalities.
- 2025-06-18 Poseł KO mecenas Giertych został pouczony o obowiązującym prawie [z SN]
- 2025-06-18 112
- 2025-06-18 Poznań => MLOps Engineer <=
- 2025-06-18 Gdańsk => Mainframe (z/OS, Assembler) Developer <=