-
Data: 2014-04-06 12:46:31
Temat: Re: Odp: Odp: Odp: C vs. ASM na przykładzie PIC18F
Od: John Smith <d...@b...pl> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- Mierniki poziomu glukozy (CGM, FGM)
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Kontrola nad prądem - sprawdź jak działa [apka - przyp. JMJ] eLicznik
- NETIA i hasło logowania
- Modulacja FM
- Najgorszy język programowania
- Kol. sukces po polsku: firma Szumisie sp. z o.o.
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- RS-485 ale automatycznie dwukierunkowy
- Leżakujące SSD gubią po roku dane
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
- OLED SSD1306 - degradacja?
- Który symulator AVR jest ,,prawilny"?
Najnowsze wątki
- 2025-12-11 To już efekt Żurka czy coś jeszcze GORSZEGO?
- 2025-12-11 Policjanci w mieście Łodzi zmierzą ci prędkość z błędem mniejszym niż producent w laboratorium :-)
- 2025-12-11 Warszawa => Senior Java Developer <=
- 2025-12-11 Kolejny prezent
- 2025-12-10 hameryka
- 2025-12-10 Tak im zależy na wlasnym kraju. :-(
- 2025-12-10 Czy "hipoteka przymusowa" podpada (powinna podpadać) pod ochronę immunitetem poselskim? [Ziobro]
- 2025-12-10 Żurek po raz kolejny wykazał jaki poziom reprezentuje
- 2025-12-10 Gdańsk => Microsoft Dynamics AX/365 SCM Consultant - Service & Suppor
- 2025-12-10 Rzeszów => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-12-10 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-12-10 Chiny => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu <
- 2025-12-10 Przekroczenie uprawnien
- 2025-12-10 China => Production Coordinator / Representant Product Dev <=
- 2025-12-10 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=




2035 rok coraz mniej realny? Europa traci tempo w wyścigu o elektromobilność