ASX8051 (SDCC)



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: Grzegorz Redlarski <gred_at_nospam_kki.net.pl>
Subject: ASX8051 (SDCC)
Date: Sat, 03 Mar 2001 15:44:54 +0100



Witam!

Trafilem na kolejny blad, tym razem w ASX8051 (z ktorego korzysta
SDCC). Raczej malo istotny, niemniej moze komus ta informacja sie
przyda.

ASX8051 zwraca kod do systemu, ktory informuje o liczbie znalezionych
bledow. Jednym z takich bledow moze byc nieprawidlowy adres skoku
wzglednego. ASC8051 wykrywa taki blad rowniez tam, gdzie go nie ma.
Mianowicie, jesli adres pod ktorym umieszczona jest instrukcja, np.
sjmp, jz itp. jest umieszczony w module dalej niz pod adresem 0x007F,
to zawsze zaliczy blad. Co ciekawe, komunikatu o tym nie wyswietli
(jesli zakres skoku faktycznie jest przekroczony, to jest komunikat).
Utrudnienie z tego wszystkiego jest takie, ze bierze w leb korzystanie
w batch'u np. z "if errorlevel goto skip_linker" :-(

BTW, troche tez dalo mi sie we znaki, ze ASX8051 musi miec instrukcje
pisane wylacznie malymi literami.

gr


Poprzedni Następny
Wiadomość
Spis treści
From: Marcin Wolcendorf <wolcendo_at_nospam_free.polbox.pl>
Subject: Re: ASX8051 (SDCC)
Date: Sat, 03 Mar 2001 17:33:25 +0100


Witam,

Grzegorz Redlarski wrote:

Mianowicie, jesli adres pod ktorym umieszczona jest instrukcja, np.
sjmp, jz itp. jest umieszczony w module dalej niz pod adresem 0x007F,
to zawsze zaliczy blad. Co ciekawe, komunikatu o tym nie wyswietli
(jesli zakres skoku faktycznie jest przekroczony, to jest komunikat).
Utrudnienie z tego wszystkiego jest takie, ze bierze w leb korzystanie
w batch'u np. z "if errorlevel goto skip_linker" :-(

A czy poprawnie produkuje nowa wersje '.rel'? Bo jesli tak, to po
prostu uzywaj make-a :-).


BTW, troche tez dalo mi sie we znaki, ze ASX8051 musi miec instrukcje
pisane wylacznie malymi literami.

To ja jeszcze mala rzecz dolacze- trzeba uwazac na przypadkowe
wciskanie klawiszy (czasem sie zdarzy...). Mnie sie udalo w etykiecie
umiescic znak '/'. Skutek? 'Division by zero, core dumped'. Nie wiadomo, w
ktorej linii, wiec szukania jest troche...


Pozdrawiam,

Marcin.


--
'My experience is that it is hard to find software producers that aren't
fuzzy.'





Poprzedni Następny
Wiadomość
Spis treści
From: Grzegorz Redlarski <gred_at_nospam_kki.net.pl>
Subject: Re: ASX8051 (SDCC)
Date: Mon, 05 Mar 2001 22:56:27 +0100


Sat, 03 Mar 2001 17:33:25 +0100 Marcin Wolcendorf
<wolcendo_at_nospam_free.polbox.pl> napisal:

A czy poprawnie produkuje nowa wersje '.rel'? Bo jesli tak, to po
prostu uzywaj make-a :-).

Od jakiegos czasu mysle o tym "mejku". Tylko, że jak rzuciłem okiem na
przykladowe pliki "makefile", to doszedlem do wniosku, ze skoro batch
mi dziala... :-)

"if errorlevel" zastapilem "if not exist cos_tam.rel ..." i nadal
dziala jak poprzednio :-)

Ale moze jednak sie skusze na tego make'a?

Czy znasz jakiś opis, czy może "kurs" pisania makefila? (oczywiście
"man make" już probowałem :-) )
Czy da się tego w kilka godzin nauczyc?
Czy ma jakies znaczenie jakiego make się używa (np. tego pod Cygwinem,
z DJGPP, a moze z Borlanda)?

To ja jeszcze mala rzecz dolacze- trzeba uwazac na przypadkowe
wciskanie klawiszy (czasem sie zdarzy...). Mnie sie udalo w etykiecie
umiescic znak '/'. Skutek? 'Division by zero, core dumped'. Nie wiadomo, w
ktorej linii, wiec szukania jest troche...

Dzieki za ostrzezenie.
Ze swojej strony dodam jeszcze, że spotkała mnie lekko niemila
niespodzianka ze strony linkera. Mianowicie cos podejrzanie dlugo
program mi sie linkowal choc byl raczej malutki. Za kazdym razem coraz
dluzej i dluzej. Okazalo sie, ze plik main.dbg (tworzony przez linkera
od nazwy pierwszego modulu - to wazne), mial kilkadziesiat MB! Po
prostu, poniewaz "main.c" nie kompilowalem od dluzszego czasu, to za
kazdym razem pozostawal poprzedni plik main.dbg (z linkera), ktory
wchodzil do nowego main.dbg (niby z linkowanego modulu) i tak to roslo
i roslo...

Pozdrawiam
gr


Poprzedni Następny
Wiadomość
Spis treści
From: Marcin Wolcendorf <wolcendo_at_nospam_free.polbox.pl>
Subject: Re: ASX8051 (SDCC)
Date: Tue, 06 Mar 2001 07:47:00 +0100


Witam,

Grzegorz Redlarski wrote:

Sat, 03 Mar 2001 17:33:25 +0100 Marcin Wolcendorf
<wolcendo_at_nospam_free.polbox.pl> napisal:

A czy poprawnie produkuje nowa wersje '.rel'? Bo jesli tak, to po
prostu uzywaj make-a :-).

Od jakiegos czasu mysle o tym "mejku". Tylko, że jak rzuciłem okiem na
przykladowe pliki "makefile", to doszedlem do wniosku, ze skoro batch
mi dziala... :-)

Tak, wiem. Make na pierwszy rzut oka wyglada nieprzyjaznie. :-)


"if errorlevel" zastapilem "if not exist cos_tam.rel ..." i nadal
dziala jak poprzednio :-)

Ale moze jednak sie skusze na tego make'a?

Make sprawdza date stworzenia pliku i czy mu sie ona zgadza z wynikiem (no
i czy plik istnieje).


Czy znasz jakiś opis, czy może "kurs" pisania makefila? (oczywiście
"man make" już probowałem :-) )

Man make i man makefile (ale polecam zrobic to pod Linuxem- tam jest
opisane bardziej calosciowo; jeszcze jest 'info'); mialem to na uczelni
troszke, jeszcze co nieco pamietam. Ogolnie- podajesz zaleznosci miedzy
zrodlami i plikami docelowymi oraz co zrobic, zeby z jednych dostac drugie.
np.
.asm.rel:
$(AS) $(ASFLAGS) $<
Mowi, jak produkowac .rel z .asm. $(AS) oznacza wziecie zawartosci zmiennej AS.
Jak wczesniej napiszesz AS = asx8051 i ASFLAGS = -losg, to zostanie to
rozwiniete do asx8051 -losg 'kolejnyplikwejsciowy'.
Gdzies w tym, co instaluje sie z SDCC jest przykladowy makefile.
No i powinno sie to znalezc w jakiejs ksiazce dotyczacej programowania pod
Unixem.


Czy da się tego w kilka godzin nauczyc?

W zasadzie tak. Taki prosty makefile, bez zmiennych, jest naprawde bardzo
prosty. Acha- trzeba bardzo uwazac na znaki 'tab'- w niektorych miejscach musza
byc tab-y, a nie ciagi spacji.


Czy ma jakies znaczenie jakiego make się używa (np. tego pod Cygwinem,
z DJGPP, a moze z Borlanda)?

Ma!!! Borlandowy jest 'gupi'. Ale przy prostych makefile-ach to nie powinno
robic roznicy.


Ze swojej strony dodam jeszcze, że spotkała mnie lekko niemila
niespodzianka ze strony linkera. Mianowicie cos podejrzanie dlugo
program mi sie linkowal choc byl raczej malutki. Za kazdym razem coraz
dluzej i dluzej. Okazalo sie, ze plik main.dbg (tworzony przez linkera
od nazwy pierwszego modulu - to wazne), mial kilkadziesiat MB!

Tak, tez to zauwazylem.


Po
prostu, poniewaz "main.c" nie kompilowalem od dluzszego czasu, to za
kazdym razem pozostawal poprzedni plik main.dbg (z linkera), ktory
wchodzil do nowego main.dbg (niby z linkowanego modulu) i tak to roslo
i roslo...

Zajrzyj do katalogu 'temp'... Tylko sie nie zdziw.


Pozdrawiam,

Marcin.


--
'My experience is that it is hard to find software producers that aren't
fuzzy.'




Poprzedni Następny
Wiadomość
Spis treści
From: Grzegorz Redlarski <gred_at_nospam_amg.gda.pl>
Subject: Re: ASX8051 (SDCC)
Date: Tue, 06 Mar 2001 14:18:39 +0100


On Tue, 06 Mar 2001 07:47:00 +0100, Marcin Wolcendorf
<wolcendo_at_nospam_free.polbox.pl> wrote:

[...]
Tak, wiem. Make na pierwszy rzut oka wyglada nieprzyjaznie. :-)

Delikatnie powiedziane :-)

Make sprawdza date stworzenia pliku i czy mu sie ona zgadza z wynikiem (no
i czy plik istnieje).

Jest jeszcze problem modyfikacji plikow wlaczanych. BTW, zauwazylem
jakas opcje SDCC (AFAIK -M), ktora ma cos w tej sprawie informowac
meke'a .

W tej chwili kompilacje robie na dwa sposoby: albo calosc, albo tylko
pojedynczy plik (ASM lub C). Jak program malutki to nie problem
czasami calosc przekompilowac. Niemniej, kiedys i tak wypadaloby sie
tego make'a nauczyc.

[...]
np.
.asm.rel:
$(AS) $(ASFLAGS) $<
Mowi, jak produkowac .rel z .asm. $(AS) oznacza wziecie zawartosci zmiennej AS.
Jak wczesniej napiszesz AS = asx8051 i ASFLAGS = -losg, to zostanie to
rozwiniete do asx8051 -losg 'kolejnyplikwejsciowy'.
[...]

Dzieki za te wyjasnienia. Sporo mi to rozjasnilo.

[...]
Zajrzyj do katalogu 'temp'... Tylko sie nie zdziw.

Z tym "temp'em" to zauwazylem na samym poczatku bawienia sie SDCC
(uruchomilem filemonitora
[http://www.sysinternals.com/ntw2k/source/filemon.shtml] aby sprawdzic
gdzie czegos tam szukal SDCC - a szuka w roznych dziwnych miejscach -
i zauwazylem przy okazji co robi w tempie) i zaraz potem gdzies o tym
przeczytalem. Ma to byc ponoc blad Cygwina. W "tempie" Cygwina tez cos
sie pisze ale tam chyba sprzatanie przebiega prawidlowo.

gr


Poprzedni Następny
Wiadomość
Spis treści
From: Marcin Wolcendorf <wolcendo_at_nospam_free.polbox.pl>
Subject: Re: ASX8051 (SDCC)
Date: Thu, 08 Mar 2001 06:35:29 +0100




Grzegorz Redlarski wrote:

On Tue, 06 Mar 2001 07:47:00 +0100, Marcin Wolcendorf
<wolcendo_at_nospam_free.polbox.pl> wrote:

[...]
Tak, wiem. Make na pierwszy rzut oka wyglada nieprzyjaznie. :-)

Delikatnie powiedziane :-)

No taaaak... Ale C na pierwszy rzut oka wcale nie wyglada lepiej :-).


Make sprawdza date stworzenia pliku i czy mu sie ona zgadza z wynikiem (no
i czy plik istnieje).

Jest jeszcze problem modyfikacji plikow wlaczanych. BTW, zauwazylem
jakas opcje SDCC (AFAIK -M), ktora ma cos w tej sprawie informowac
meke'a .

Niezupelnie. Po prostu dopisujesz je jako pliki, od ktorych zalezy plik
wyjsciowy. To, o czym piszesz, to ma byc ulatwienie, zeby mozna bylo samemu stworzyc
sobie ze zrodla w C liste plikow dolaczanych, ktore tez maja byc sprawdzane przez
make-a.


W tej chwili kompilacje robie na dwa sposoby: albo calosc, albo tylko
pojedynczy plik (ASM lub C). Jak program malutki to nie problem
czasami calosc przekompilowac. Niemniej, kiedys i tak wypadaloby sie
tego make'a nauczyc.

Popieram. On to robi automagicznie. Jesli chcesz, moge Ci przeslac baaaardzo
prostego make-a, ktorego wlasnie uzywam do poskladania mojego projektu. W tej chwili
niestety wyszlo na to, ze calosc jest w asmie, ale make bardzo ladnie asembluje mi
zmieniony plik i wszystko laczy.


Dzieki za te wyjasnienia. Sporo mi to rozjasnilo.

You're welcome. Wziąłem je z jakiegoś mana lub info (tj. sprawdziłem sobie
najpierw :-) ).


Z tym "temp'em" to zauwazylem na samym poczatku bawienia sie SDCC
(uruchomilem filemonitora
[http://www.sysinternals.com/ntw2k/source/filemon.shtml] aby sprawdzic
gdzie czegos tam szukal SDCC - a szuka w roznych dziwnych miejscach -
i zauwazylem przy okazji co robi w tempie) i zaraz potem gdzies o tym
przeczytalem. Ma to byc ponoc blad Cygwina. W "tempie" Cygwina tez cos
sie pisze ale tam chyba sprzatanie przebiega prawidlowo.

Hmmmm... W sumie za bardzo to chyba nie przeszkadza, wiec...



Pozdrawiam,

Marcin.


--
'My experience is that it is hard to find software producers that aren't fuzzy.'