-
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.unit0.net!usenet.blueworldhosting.com!feeder01.bluewo
rldhosting.com!peer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.
highwinds-media.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostra
da.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrad
a.pl.POSTED!not-for-mail
Content-Type: text/plain; charset="UTF-8"
From: jacek pozniak <j...@f...pl>
Date: Sat, 05 Apr 2014 12:42:30 +0200
User-Agent: KNode/4.4.8
Content-Transfer-Encoding: 8Bit
Subject: Re: Odp: C vs. ASM na przykładzie PIC18F
Newsgroups: pl.misc.elektronika
References: <lhntl8$u3a$1@mx1.internetia.pl>
<533fc888$0$2155$65785112@news.neostrada.pl>
<lhokd1$92v$1@mx1.internetia.pl>
Followup-To: pl.misc.elektronika
MIME-Version: 1.0
Lines: 249
Message-ID: <533fde16$0$2158$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.12.26.66
X-Trace: 1396694550 unt-rea-a-02.news.neostrada.pl 2158 83.12.26.66:35914
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 5661
X-Received-Body-CRC: 3525603189
Xref: news-archive.icm.edu.pl pl.misc.elektronika:662329
[ ukryj nagłówki ]Sylwester Łazar wrote:
>> 1. Kompilator HiTech 8.05PL2 -O -Zg, procesor pic16f876A:
>> 149 words(słów, nie bajtów) ROM, 38 bytes RAM
>> bez funkcji zlicz(), odpowiednio 54 słów ROM, 35 RAM
>>
> Słusznie napisałeś, że po kompilacji ma 149 _słów_.
> Mój w ASM ma 71 słów na 18F.
> na 16F miałby o 10 słów więcej, gdyż 16F nie ma rozkazów LFSR,MOVFF i
> NEGF. Czyli 81 słów vs. 149 słów, czyli współczynnik C/ASM=1,8.
>
Podaj proszę ile ma Twoja funkcja zlicz() w ASM napisana, ponieważ podałem
wynik kompilacji z i bez niej. Kompilator pewnie dorzuca jakiś extra kod
jako startup.obj.
> Całkiem nieźle, jeśli chodzi o nadmiarowość kodu.
> Jednak jak powiedziałem - nie mierzyłem czasu, więc nie są te badania
> obiektywne,
> co do czasu wykonywania.
> Ja podałem ok. 6x wolniejszy, ale to tylko szacunek.
> Podaj może ilość rozkazów w głównej pętli sortującej, lub umieść kod to
> policzymy.
> S.
Ja jedynie mogę wklaić wynik kompilacji z opcją -S:
global ?a_zlicz
global _ADRDIOD
global _ADRDOUT
global _LICZV
global _VDIOD
global _VDOUT
global _k
global _main
signat _main,88
FNCALL _main,_zlicz
global _n
global _zlicz
signat _zlicz,88
FNSIZE _zlicz,2,0
global clear_bank0
global start
global used_btemp0
processor 16F876A
psect __Z08170RS_,global
psect text0,local,class=CODE,delta=2
psect text1,local,class=CODE,delta=2
psect strings,global,class=STRING,delta=2
psect const1,local,class=CONST,delta=2
psect const2,local,class=CONST,delta=2
psect rbss_0,global,class=BANK0,space=1
psect temp,global,ovrld,class=BANK0,space=1
file "C:\users\jacek\Temp\_8.AAB"
psect __Z08170RS_
psect text0
_main
;main5.c: 16: VDIOD[0]=1;
bcf 3,5
bcf 3,6 ;carry unused
clrf _VDIOD
incf _VDIOD
;main5.c: 17: VDIOD[1]=2;
movlw 2
movwf _VDIOD+1
;main5.c: 18: VDIOD[2]=6;
movlw 6
movwf _VDIOD+2
;main5.c: 19: VDIOD[3]=4;
movlw 4
movwf _VDIOD+3
;main5.c: 20: VDIOD[4]=3;
movlw 3
movwf _VDIOD+4
;main5.c: 21: ADRDIOD[0][0]=1;
clrf _ADRDIOD
incf _ADRDIOD
;main5.c: 22: ADRDIOD[0][1]=0;
clrf _ADRDIOD+1
;main5.c: 23: ADRDIOD[1][0]=1;
clrf _ADRDIOD+2
incf _ADRDIOD+2
;main5.c: 24: ADRDIOD[1][1]=1;
clrf _ADRDIOD+3
incf _ADRDIOD+3
;main5.c: 25: ADRDIOD[2][0]=1;
clrf _ADRDIOD+4
incf _ADRDIOD+4
;main5.c: 26: ADRDIOD[2][1]=2;
movlw 2
movwf _ADRDIOD+5
;main5.c: 27: ADRDIOD[3][0]=2;
movwf _ADRDIOD+6
;main5.c: 28: ADRDIOD[3][1]=0;
clrf _ADRDIOD+7
;main5.c: 29: ADRDIOD[4][0]=2;
movwf _ADRDIOD+8
;main5.c: 30: ADRDIOD[4][1]=1;
clrf _ADRDIOD+9
incf _ADRDIOD+9
;main5.c: 32: zlicz();
fcall _zlicz
;main5.c: 35: }
ljmp start
psect text1
_zlicz
; _j assigned to ?a_zlicz+0
_zlicz$j set ?a_zlicz
; _i assigned to ?a_zlicz+1
_zlicz$i set ?a_zlicz+1
;main5.c: 38: char i;
clrf 3 ;select bank 0
clrf ?a_zlicz+1
goto l6
l3
movf ?a_zlicz+1,w
addlw _LICZV
movwf 4
bcf 3,7
clrf 0
incf ?a_zlicz+1
l6
movlw 7
subwf ?a_zlicz+1,w
btfss 3,0
goto l3
;main5.c: 42: for(i=0;i<n;++i) ++LICZV[VDIOD[i]];
clrf ?a_zlicz+1
l10
movlw 5
subwf ?a_zlicz+1,w
btfsc 3,0
goto l8
movf ?a_zlicz+1,w
addlw _VDIOD
movwf 4
bcf 3,7
movf 0,w
addlw _LICZV
movwf 4
incf 0
incf ?a_zlicz+1
goto l10
l8
;main5.c: 43: for(i=1;i<k;++i) LICZV[i]+=LICZV[i-1];
clrf ?a_zlicz+1
L1
incf ?a_zlicz+1
movlw 7
subwf ?a_zlicz+1,w
btfsc 3,0
goto l12
decf ?a_zlicz+1,w
addlw _LICZV
movwf 4
bcf 3,7
movf 0,w
movwf btemp
movf ?a_zlicz+1,w
addlw _LICZV
movwf 4
movf btemp,w
addwf 0
goto L1
l12
;main5.c: 44: for(i = n-1 ; i >= 0 ; --i)
movlw 4
movwf ?a_zlicz+1
l15
;main5.c: 45: {
;main5.c: 46: j=--LICZV[VDIOD[i]];
movf ?a_zlicz+1,w
addlw _VDIOD
movwf 4
bcf 3,7
movf 0,w
addlw _LICZV
movwf 4
decf 0
movf 0,w
movwf ?a_zlicz
;main5.c: 47: VDOUT[j] = VDIOD[i];
movf ?a_zlicz+1,w
addlw _VDIOD
movwf 4
movf 0,w
movwf btemp
movf ?a_zlicz,w
addlw _VDOUT
movwf 4
movf btemp,w
movwf 0
;main5.c: 48: ADRDOUT[j][0]=ADRDIOD[i][0];
movf ?a_zlicz+1,w
addwf ?a_zlicz+1,w
addlw _ADRDIOD
movwf 4
movf 0,w
movwf btemp
movf ?a_zlicz,w
addwf ?a_zlicz,w
addlw _ADRDOUT
movwf 4
movf btemp,w
movwf 0
;main5.c: 49: ADRDOUT[j][1]=ADRDIOD[i][1];
bsf 3,0
rlf ?a_zlicz+1,w
addlw _ADRDIOD
movwf 4
movf 0,w
movwf btemp
bsf 3,0
rlf ?a_zlicz,w
addlw _ADRDOUT
movwf 4
movf btemp,w
movwf 0
;main5.c: 50: }
decf ?a_zlicz+1
goto l15
psect const1
addwf 2
_k
retlw 7
psect const2
addwf 2
_n
retlw 5
psect rbss_0
_LICZV
ds 5
_VDIOD
ds 5
_VDOUT
ds 5
_ADRDIOD
ds 10
_ADRDOUT
ds 10
psect temp
btemp
ds 1
Następne wpisy z tego wątku
- 05.04.14 12:48 Sylwester Łazar
- 05.04.14 12:52 Marek
- 05.04.14 13:03 Sylwester Łazar
- 05.04.14 13:09 Sylwester Łazar
- 05.04.14 13:19 Sylwester Łazar
- 05.04.14 13:27 Sylwester Łazar
- 05.04.14 13:26 jacek pozniak
- 05.04.14 13:39 Sylwester Łazar
- 05.04.14 14:13 jacek pozniak
- 05.04.14 15:28 Sylwester Łazar
- 05.04.14 15:43 AlexY
- 05.04.14 15:49 jacek pozniak
- 05.04.14 16:12 Sylwester Łazar
- 05.04.14 16:19 Sylwester Łazar
- 05.04.14 17:54 janusz_k
Najnowsze wątki z tej grupy
- 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
- I3C
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=