-
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!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: John Smith <d...@b...pl>
Newsgroups: pl.misc.elektronika
Subject: Re: Odp: Odp: Odp: C vs. ASM na przykładzie PIC18F
Date: Sun, 06 Apr 2014 12:46:31 +0200
Organization: ATMAN - ATM S.A.
Lines: 86
Message-ID: <lhrba7$b0o$1@node1.news.atman.pl>
References: <lhntl8$u3a$1@mx1.internetia.pl> <lho1fp$vdg$1@node2.news.atman.pl>
<lhoe4u$k69$1@mx1.internetia.pl> <lhq64r$5in$1@node2.news.atman.pl>
<lhq8fm$moq$1@mx1.internetia.pl> <lhq9e8$8s4$1@node2.news.atman.pl>
<lhr58o$l45$1@mx1.internetia.pl>
Reply-To: d...@b...pl
NNTP-Posting-Host: 188.246.158.5.rev.vline.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1396781191 11288 188.246.158.5 (6 Apr 2014 10:46:31 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 6 Apr 2014 10:46:31 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.1.1
In-Reply-To: <lhr58o$l45$1@mx1.internetia.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:662408
[ ukryj nagłówki ]On 06-04-2014 10:49, Sylwester Łazar wrote:
>>> Możesz wrzucić ten przykład do swojego kompilatora, na swój uK i pokazać
> ile
>>> rozkazów ma zlicz()?
>>
>> dla funkcji zlicz:
>> IAR C/C++ Compiler V5.30.1.50284/W32 for MSP430
>> 102 bytes of CODE memory
>> po właczeniu optymalizacji rozmiaru.
>> Procesor MSP430 na pewno 16-bitowy. :)
>> K.
> W takim razie musiałbym porównywać wtedy do dsPIC30.
> No, ale w przyszłości może porównam też 16-bitowe.
> Możesz podać na jaki model kompilowałeś i wkleić kod ?
Wykonałem kilkadziesiąt kompilacji na różne rodziny MSP430,
rozmiar półkompilatu zawsze ten sam: 102 bajty.
Listing kodu funkcji zlicz (zoptymalizowany)
for(i = 0 ; i < k ; ++i)
zlicz:
?cstart_end:
00801A 430C clr.w R12
00801C 425D 8000 mov.b &k,R13
008020 3C03 jmp 0x8028
LICZV[i] = 0; // zerowanie tablicy
008022 43CC 111E clr.b 0x111E(R12)
for(i = 0 ; i < k ; ++i)
008026 531C inc.w R12
for(i = 0 ; i < k ; ++i)
008028 9D0C cmp.w R13,R12
00802A 3BFB jl 0x8022
for(i = 0 ; i < n ; ++i)
00802C 430C clr.w R12
00802E 425E 8001 mov.b &n,R14
008032 3C05 jmp 0x803E
++LICZV[VDIOD[i]]; // po tych operacjach LICZV[i] będzie
zawierała
008034 4C5F 1100 mov.b 0x1100(R12),R15
008038 53DF 111E inc.b 0x111E(R15)
for(i = 0 ; i < n ; ++i)
00803C 531C inc.w R12
for(i = 0 ; i < n ; ++i)
00803E 9E0C cmp.w R14,R12
008040 3BF9 jl 0x8034
for(i = 1 ; i < k ; ++i)
008042 431C mov.w #0x1,R12
008044 3C04 jmp 0x804E
LICZV[i] += LICZV[i-1]; // teraz LICZV[i] zawiera pozycje w
posortowanej
008046 5CDC 111D 111E add.b 0x111D(R12),0x111E(R12)
for(i = 1 ; i < k ; ++i)
00804C 531C inc.w R12
for(i = 1 ; i < k ; ++i)
00804E 9D0C cmp.w R13,R12
008050 3BFA jl 0x8046
for(i = n-1 ; i >= 0 ; --i)
008052 4E0C mov.w R14,R12
008054 3C11 jmp 0x8078
j=--LICZV[VDIOD[i]]; // aktualizacja LICZV
008056 4C5E 1100 mov.b 0x1100(R12),R14
00805A 53FE 111E add.b #0xFF,0x111E(R14)
00805E 4E5F 111E mov.b 0x111E(R14),R15
VDOUT[j] = VDIOD[i]; //wstawienie elementu na odpowiednią
pozycję
008062 4ECF 1105 mov.b R14,0x1105(R15)
ADRDOUT[j][0] = ADRDIOD[i][0]; // sortowanie adresów
008066 5F0F rla.w R15
008068 4C0E mov.w R12,R14
00806A 5E0E rla.w R14
00806C 4EDF 110A 1114 mov.b 0x110A(R14),0x1114(R15)
ADRDOUT[j][1] = ADRDIOD[i][1]; // sortowanie adresów
008072 4EDF 110B 1115 mov.b 0x110B(R14),0x1115(R15)
for(i = n-1 ; i >= 0 ; --i)
008078 533C add.w #0xFFFF,R12
for(i = n-1 ; i >= 0 ; --i)
00807A 930C tst.w R12
00807C 37EC jge 0x8056
}
00807E 4130 ret
miłego analizowania.
K.
Następne wpisy z tego wątku
- 06.04.14 13:43 Sylwester Łazar
- 06.04.14 15:52 janusz_k
- 06.04.14 16:28 janusz_k
- 06.04.14 17:56 Sylwester Łazar
- 08.04.14 19:51 Sylwester Łazar
Najnowsze wątki z tej grupy
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
- Czemu rozwaliło celę?
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
- Wentylator zabija zasilacze LEDek?
- Re: Kompensacja mocy biernej przy 230VAC
- Totaliztyczny obowiązek naprawy maszyn i urządzeń
- Niby uziom ale nie
- Położyłem dwa telefony obok siebie
Najnowsze wątki
- 2025-04-26 e-Doręczenia w praktyce.
- 2025-04-26 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-04-26 Warszawa => Developer Microsoft Dynamics 365 Finance & Operations (D36
- 2025-04-26 Warszawa => Programista Microsoft Dynamics 365 Finance & Operations (D
- 2025-04-26 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-04-26 Patrole obywatelskie.
- 2025-04-26 Warszawa => Presales Engineer IT <=
- 2025-04-26 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-04-26 Rudno => IT network administrator <=
- 2025-04-26 Dęblin => Node.js / Fullstack Developer <=
- 2025-04-25 Sprawdzić czy spółka ma sprawy w sądzie
- 2025-04-25 Solarny Palnik Wodorowy
- 2025-04-25 amperomierz w plusie
- 2025-04-25 nie wyłączam silnika
- 2025-04-25 PILNE !! Stara żywność w marketach "Zgodnie z obowiązującym od stycznia 2024 r. prawem przeterminowana, ale nadal zdatna do spożycia żywność, może być sprzedawana przez maksymalnie kolejne 45 dni po dacie na opakowaniu. To legalne tylko wtedy, gdy opakowa