Kompilatory C i assembler do C51: Co polecacie, Keil czy IAR?
80C51
From: Beata <elkom1_at_nospam_free.polbox.pl>
Subject: 80C51
Date: Fri, 07 Mar 1997 05:48:03 +0100
Kto ma dobry kompilator C i assembler do C51 ?
From: "Mirosław Mućk" <mmuck_at_nospam_free.polbox.pl>
Subject: Re: 80C51
Date: 7 Mar 1997 07:39:14 GMT
Beata <elkom1_at_nospam_free.polbox.pl> napisał(a) w artykule
<331F9E03.5E03_at_nospam_free.polbox.pl>...
Kto ma dobry kompilator C i assembler do C51 ?
Keil ma (bardzo dobry).
From: =?iso-8859-2?Q?Bart=B3omiej=20Zieli=F1ski?= <bmw_at_nospam_zeus.polsl.gliwice.pl>
Subject: Re: 80C51
Date: Fri, 07 Mar 1997 10:41:27 +0100
Miros=B3aw Mu=E6k wrote:
Beata <elkom1_at_nospam_free.polbox.pl> napisa=B3(a) w artykule
Kto ma dobry kompilator C i assembler do C51 ?
Keil ma (bardzo dobry).
Niezly jest tez Archimedes (znany jako IAR).
Oba mozesz kupic w Calteku we Wroclawiu.
EMAIL: caltek_at_nospam_wro.ternet.pl
-- =
--------------------------------------------------------
- Bartlomiej Zielinski *
- e-mail, finger: bmw_at_nospam_zeus.polsl.gliwice.pl *
- home page: http://zeus.polsl.gliwice.pl/~bmw *
--------------------------------------------------------
From: gred_at_nospam_free.polbox.pl (Grzegorz Redlarski)
Subject: Re: 80C51
Date: Sat, 08 Mar 1997 01:52:42 GMT
On Fri, 07 Mar 1997 10:41:27 +0100, Bartłomiej Zieliński
<bmw_at_nospam_zeus.polsl.gliwice.pl> wrote:
Mirosław Mućk wrote:
Beata <elkom1_at_nospam_free.polbox.pl> napisał(a) w artykule
Kto ma dobry kompilator C i assembler do C51 ?
Keil ma (bardzo dobry).
Niezly jest tez Archimedes (znany jako IAR).
Tylko chyba warto poczekać aż środowisko (workbench for windows)
dopracują. Program ma mnóstwo bugów (wersja IAR v1.10I). Sam
kompilator też ma błędy. Zainteresowanym mogę przesłać kopie listy
błędów i "ułomności" programu, którą kiedyś wsłałem do dystrybutora
IAR'a (dawniej Archimedes). Same możliwości kompilatora, linkera,
assemblera są dość spore. Środowisko było by też nienajgorsze gdyby
nie te błędy... Optymalizacja, mimo wielu opcji, potrafi być niestety
bardzo kiepska.
Warto się też zapoznać z firmą TASKING. Właśnie ściągnąłem sobie ich
demo, ale jeszcze nie zdążyłem się pobawić.
http://www.tasking.com/products/8051/demo_res.htm
Ten, i inne adresy dotyczące '51, znjdziesz na mojej stronie.
gr
Grzegorz Redlarski (Gdańsk)
mailto:gred_at_nospam_amg.gda.pl (iso8859-2)
http://free.polbox.pl/g/gred/
From: wzielins_at_nospam_cyber.ict.pwr.wroc.pl (Wojciech Zielinski)
Subject: Re: 80C51
Date: 10 Mar 1997 22:41:41 GMT
Beata (elkom1_at_nospam_free.polbox.pl) wrote:
Kto ma dobry kompilator C i assembler do C51 ?
Jesli chodzi o 51, to w ogole nie ma mowy o dobrym kompilatorze. Chocby
nie wiem co, to generowany kod jest dlugi i wolny. Np taki sam program,
napisany na hc11 bedzie ze 2 razy mniejszy , no i ze 2 razy szybszy(oczy-
wiscie ze wzgledu na liste rozk.).
Sposrod znanych mi kompilatorow na 51, a znam 2, lepszy jest Keil.
Napisalem spory program, z uzyciem wiekszosci funkcji ansi-c i nie natknalem
sie na zadne bledy(w wersji 4.00). Nie wiem, jak w nowszych. Ostatnio
Keil/Franklin wypuscil wersje 6.00 - ma dodatkowe bajery, np. generuje kod
na 251 i xa. Jak ktos ma licencjonowana wersje wczesniejsza, to mozna
upgrade'owac w cenie bodajze 630$.
--
---------------------------------------------------------------------------
Wojciech Zielinski
wzielins_at_nospam_asic.ict.pwr.wroc.pl
---------------------------------------------------------------------------
From: =?iso-8859-2?Q?Bart=B3omiej=20Zieli=F1ski?= <bmw_at_nospam_zeus.polsl.gliwice.pl>
Subject: Re: 80C51
Date: Tue, 11 Mar 1997 05:19:09 +0100
Wojciech Zielinski wrote:
Jesli chodzi o 51, to w ogole nie ma mowy o dobrym kompilatorze. Chocby
nie wiem co, to generowany kod jest dlugi i wolny. Np taki sam program,
napisany na hc11 bedzie ze 2 razy mniejszy , no i ze 2 razy szybszy(oczy-
wiscie ze wzgledu na liste rozk.).
Ciekawe, moj kumpel uwaza, ze kod z kompilatora Archimedes (IAR) jest
niezly. Byc moze odczucia wynikaja wlasnie z cech procesora a nie
kompilatora?
--
--------------------------------------------------------
* Bartlomiej Zielinski *
* e-mail, finger: bmw_at_nospam_zeus.polsl.gliwice.pl *
* home page: http://zeus.polsl.gliwice.pl/~bmw *
--------------------------------------------------------
From: wzielins_at_nospam_cyber.ict.pwr.wroc.pl (Wojciech Zielinski)
Subject: Re: 80C51
Date: 13 Mar 1997 16:50:44 GMT
=?iso-8859-2?Q?Bart=B3omiej=20Zieli=F1ski?= (bmw_at_nospam_zeus.polsl.gliwice.pl) wrote:
Wojciech Zielinski wrote:
Jesli chodzi o 51, to w ogole nie ma mowy o dobrym kompilatorze. Chocby
nie wiem co, to generowany kod jest dlugi i wolny. Np taki sam program,
napisany na hc11 bedzie ze 2 razy mniejszy , no i ze 2 razy szybszy(oczy-
wiscie ze wzgledu na liste rozk.).
Ciekawe, moj kumpel uwaza, ze kod z kompilatora Archimedes (IAR) jest
niezly. Byc moze odczucia wynikaja wlasnie z cech procesora a nie
kompilatora?
--
:
: --------------------------------------------------------
: * Bartlomiej Zielinski *
: * e-mail, finger: bmw_at_nospam_zeus.polsl.gliwice.pl *
: * home page: http://zeus.polsl.gliwice.pl/~bmw *
: --------------------------------------------------------
Ja nie napisalem, ze kompilator jest zly, tylko procesor do d... Mam stycznosc
z innymi procesorami (i kompilatorami) i wiem, co mowie. C na x51 nada sie,
gdy nie uzywasz zewnetrznej pamieci ram. Jesli jednak masz program z duza
iloscia danych (tablice, struktury) ktore rezyduja w xdata, to kazde takie
odwolanie kompilator 51 tluimaczy na strone assemblera (lub wiecej). W porow
naniu z tym np hc11 wystarczy 3-6 linii asm.
Przy okazji pytanie :
Czy ktos moze uzywa wersji 6.0 KeilC? Czy oplaca sie upgrade'owac?
--
---------------------------------------------------------------------------
Wojciech Zielinski
wzielins_at_nospam_asic.ict.pwr.wroc.pl
---------------------------------------------------------------------------
From: gred_at_nospam_free.polbox.pl (Grzegorz Redlarski)
Subject: Re: 80C51
Date: Thu, 13 Mar 1997 23:31:01 GMT
On Tue, 11 Mar 1997 05:19:09 +0100, Bartłomiej Zieliński
<bmw_at_nospam_zeus.polsl.gliwice.pl> wrote:
Wojciech Zielinski wrote:
Jesli chodzi o 51, to w ogole nie ma mowy o dobrym kompilatorze. Chocby
nie wiem co, to generowany kod jest dlugi i wolny. Np taki sam program,
napisany na hc11 bedzie ze 2 razy mniejszy , no i ze 2 razy szybszy(oczy-
wiscie ze wzgledu na liste rozk.).
Ciekawe, moj kumpel uwaza, ze kod z kompilatora Archimedes (IAR) jest
niezly. Byc moze odczucia wynikaja wlasnie z cech procesora a nie
kompilatora?
Przyklad kodu zoptymalizowanego pod wzgledem rozmiaru kodu(opcja size
full -z9).
xdata unsigned wr;
wr = 0xFF & (wr / 256);
zostalo przekodowane na:
MOV DPTR, #wr
MOVX A, _at_nospam_DPTR
MOV R7, A
INC DPTR
MOVX A, _at_nospam_DPTR
MOV R6, A
MOV A, R7
MOV R5, A
MOV A, R6 ; !!!
MOV A, R5
MOV R5, #0 ; !!!
MOV R4, A ; !!!
MOV R6, A
MOV R7, #0
MOV DPTR, #wr
MOV A, R7
MOVX _at_nospam_DPTR, A
INC DPTR
MOV A, R6
MOVX _at_nospam_DPTR, A
A, mozna by np. tak:
MOV DPTR, #wr
MOVX A, _at_nospam_DPTR
INC DPTR
MOVX _at_nospam_DPTR, A
MOV DPTR, #wr
CLR A
MOVX _at_nospam_DPTR, A
Czesto mozna znalezc w kodzie jakies ladowania do rejestru, ktore
pozniej do niczego nie sa potrzebne. W przykladzie oznaczone zostaly
przez "!!!".
gr
From: amart_at_nospam_pol.pl (Jaroslaw Cichorski jun.)
Subject: Re: 80C51
Date: Sat, 15 Mar 1997 16:59:18 GMT
gred_at_nospam_free.polbox.pl (Grzegorz Redlarski) wrote:
Przyklad kodu zoptymalizowanego pod wzgledem rozmiaru kodu(opcja size
full -z9).
xdata unsigned wr;
wr = 0xFF & (wr / 256);
zostalo przekodowane na:
MOV DPTR, #wr
MOVX A, _at_nospam_DPTR
MOV R7, A
INC DPTR
MOVX A, _at_nospam_DPTR
MOV R6, A
MOV A, R7
MOV R5, A
MOV A, R6 ; !!!
MOV A, R5
MOV R5, #0 ; !!!
MOV R4, A ; !!!
MOV R6, A
MOV R7, #0
MOV DPTR, #wr
MOV A, R7
MOVX _at_nospam_DPTR, A
INC DPTR
MOV A, R6
MOVX _at_nospam_DPTR, A
A, mozna by np. tak:
MOV DPTR, #wr
MOVX A, _at_nospam_DPTR
INC DPTR
MOVX _at_nospam_DPTR, A
MOV DPTR, #wr
CLR A
MOVX _at_nospam_DPTR, A
Czesto mozna znalezc w kodzie jakies ladowania do rejestru, ktore
pozniej do niczego nie sa potrzebne. W przykladzie oznaczone zostaly
przez "!!!".
gr
Keil V5.02 kompiluje to tak niezaleznie od uzytej (lub nie)
optymalizacji i jest poziomu:
Source w C
xdata unsigned int wr;
wr = 0xFF & (wr / 256);
Kompilat:
; bez optymalizacji, z optymalizacja #pragma OPTIMIZE(6,SIZE) oraz
; #pragma OPTIMIZE(6,SPEED) daje to samo:
; SOURCE LINE # 403
0000 900000 R MOV DPTR,#wr
0003 E0 MOVX A,_at_nospam_DPTR
0004 FF MOV R7,A
0005 E4 CLR A
0006 F0 MOVX _at_nospam_DPTR,A
0007 EF MOV A,R7
0008 A3 INC DPTR
0009 F0 MOVX _at_nospam_DPTR,A
; SOURCE LINE # 405
Jarek