Witam,
Jeśli kogoś zainteresuje, to proszę bardzo:
https://bitbucket.org/sqward/sv2011_invitro
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Nowa obudowa dla 800XL - zostało 36 dni Niewiele ponad miesiąc do końca kampanii.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
4th Atari ASCII Compo - wyniki Dostępne są już wyniki tegorocznego ATASCII Compo.
thing neo 1.60 Olivier Landemarre wydał nową wersję desktopu Thing.
atari.area forum » Software, Gry - 16/32bit » Źródła do invitki na sv2011
Zaloguj się lub zarejestruj by napisać odpowiedź
Witam,
Jeśli kogoś zainteresuje, to proszę bardzo:
https://bitbucket.org/sqward/sv2011_invitro
chodzi o to? http://www.pouet.net/prod.php?which=57787
git, już sciągam
sporo waży - 142.6 MB
cegły nawrzucaliście? ;)
O to. są tam wszystkie źródłowe obrazki itp.
Jakby ktoś nie zauważył to tam jest jedna bardzo użyteczna rzecz pt. "mikrostartup". Chodzi o to, że nie jesteśmy już uwiązani do bibliotek standardowych libc itd, itp przy korzystaniu z gcc 4.xx.
I tak binarka spadła do ok. 1,5kb z 65kb (tyle zajmował minimalny program ze printf()).
Właśnie testuję ze sconsem budowę minimalnego setup'u ;P. Jak zabangla dam znać.
okiej,
rzecz o mikrostartupie i odchudzaniu binarek w nowym gcc 4.3.x jest tutaj:
http://bus-error.nokturnal.pl/tiki-read … ticleId=12
Są dwie wersje dla C i C++.
A czy ten mikrostartup jest kompatybilny z ARGV?
co to znaczy być kompatybilnym z argv? chodzi o przyjmowanie zmiennej liczby parametrów? nie wiem, ale możesz sprawdzić. jak nie działa to trzeba zrobić. Mi to do szczęścia nie było potrzebne, a Sqward chciał tylko demo odpalić ;).
Nie. Chodzi o przekazywanie atrybutów przez zmienne środowiskowe.
Btw. Draco030 swego czasu też to robił, jest to element jego programików pod FreeMiNTa, a tu: http://www.obta.uw.edu.pl/~draco/atari/atari.html
nie jest mi to jakoś specjalnie do szczęścia potrzebne..
Nie jest
Ale jak by było, można by to wciągnąć do mintliba jako zamiennik oryginalnego crt0 i wszyscy by na tym skorzystali.
Ok, każdy może skorzystać, bo są źródła. Ja nie mogę się tym zająć (nie jest mi to po drodze), Sqward pewnie też nie (mamy swoje projekty).
Jako uzupełnienie mogę jeszcze dodać, że na atari forum(chyba Nyh), ktoś przepisał wszystkie podstawowe funkcje C (lub ich większość) w assemblerze.
Można to wykorzystać.
No, to akurat w mintlib/gcc jest już od jakiegoś czasu.
Tak, ale od mintliba i całej tej ferajny profesjonalistów z mintlisty to wolę się trzymać z daleka.
sqward: bez przesadyzmu ;) stosunek sygnału do szumu jest wysoki to prawda i jest kilku nawet niezłych spammerów ;)
A na poważnie, to znajdziesz tam na pewno kilku sensownych ludzi, a to że nie ma wyznaczonego kierunku i jest bezwład to inna sprawa.
Racja. Przesadziłem trochę. Przydałby się jakiś Linus, który by to wszystko za mordę trzymał.
pytanie do fachowców, co to jest:
- crt0
- mintlib (funkcje gemdos minta??)
- czemu binarki na ST spod GCC sa takie duze
dzięki
- crt0 to standardowy kod który jest potrzebny do wystartowania programu. Każdy kompilator to ma. Jak piszesz program w asmie to też jest rutynowy startup (mshrink() i inne cuda). Wikipedia mówi to: http://en.wikipedia.org/wiki/Crt0
- mintlib to biblioteka standardowa FreeMinta, która ma funkcje/interfejsy podobne do unixowych i dzięki temu można robić porty różnych narzędzi i w ogóle używać unixowych programów na FreeMiNcie (przynajmniej ja to tak rozumiem). To jest teżtaki pośrednik między użytkownikiem, a systemem operacyjnym. Tam są też wszystkie nagłówki i dzięki temu jest dostęp do funkcji systemowych Atari (BIOS/XBIOS etc.)
- to przez samo gcc (to nie jest kwestia platformy docelowej tj. binarki są tak duże, że odpalanie ich na ST pożera dosyć sporo zasobów pamięciowych, na falconach z 14mb albo tt ramem ten problem jest nie istotny), w starszych wersjach np. gcc 2.95 ten problem nie występował, w nowszych wersjach sprawa się pogorszyła (nie jestem ekspertem, więc nie wiem dokładnie dlaczego tak się stało). Ale to nie jest problem tylko na naszej platformie. Tak na pierwszy rzut oka wygląda na to, że zawsze dołączana jest standardowa biblioteka i masa różnych symboli, wbudowanych funkcji itp. (gazylion rzeczy) i binarka nawet z głupim 'Helloł world' dużo waży. Jak zajrzysz do przykładów i zobaczysz mapę symboli to się przekonasz o czym mowa.
GCC w tej chwili jako jeden z niewielu obsługuje standard C C99, który wg mnie jest wygodniejszy niż ten stary skostniały ANSI C i z tego co wiem żaden z natywnych kompilatorów (no może z wyjątkiem VBCC, AHCC trudno mi powiedzieć, bo się nie zagłębiałem) go nie obsługuje. To głównie dlatego go używam.
Binarki spod gcc na ST są duże ponieważ ST nie ma dynamicznych bibliotek. Pod linuxem (i nawet pod windowsem) całe crt0 i biblioteka standardowa są linkowane dynamicznie więc binarki są małe (bo zawierają tylko kod programu). Natomiast na ST wszystko jest wlinkowywane do pliku wynikowego. Dlatego taka wielkość. Mój startup poprostu daje tyle funkcjonalności, że odpala funkcję main() i dalej musisz sobie radzić sam :)
to właściwie dotyczy ogólnie wszystkich modeli Atari, na ST skutki są najbardziej bolesne (bo ma mało pamięci(np. 512kb) i fajnie by było programy odpalać z dyskietki DD ;>).
I to nie chodzi o samo tylko crt0 zlinkowane statycznie, tylko ,że rozmiar crt0 (porównajcie sobie je z wersją dla Pure C) w gcc jest spory i doklejane są jeszcze rzeczy z kosmosu i to "z partyzanta" czy ich potrzebujesz czy nie. Linkowanie statyczne bibliotek dodatkowych pomijam.
Z GCC 2.95 problem wygląda dokładnie tak samo.
W skrócie polega on na tym, że aby 'wystartować' program w C zgodnie ze wszystkimi specyfikacjami Atari (np. wspomniane przeze mnie wcześniej ARGV), trzeba się trochę narobić. Dlatego crt0 zawiera w sobie prawie całą bibliotekę stdlib, string itp. Dlaczego? Bo wykorzystuje kilka funkcji które tam są, a linker (i gcc, a przynajmniej ich kompilacja na atari) nie potrafi usunąć nieużywanych funkcji.
Z punktu widzenia aplikacji Unixowych, to nie ma takiego wielkiego znaczenia - one zazwyczaj i tak wykorzystują te biblioteki, więc one i tak znalazłyby się w końcowej binarce. Jeśli jednak się ich nie wykorzystuje, lub wykorzystuje w bardzo ograniczonym stopniu, to niestety binarka jest trochę przerośnięta. Nie ma to wielkiego wpływu na szybkość samego programu.
gdzie można znaleźć zrółdo tego crt0 z GCC dla Atari ST?
W mintlibie. Najprościej ściągnąć z CVSa, http://wiki.sparemint.org/index.php/CVS
adamk: to nie może być tak samo, skoro w gcc 2.95 binarki jeszcze były akceptowalnej wielkości.
W mintlibie. Najprościej ściągnąć z CVSa, http://wiki.sparemint.org/index.php/CVS
dzięki, rozumiem że ten CRT0 to jakiś plik? jak on się nazywa?
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Software, Gry - 16/32bit » Źródła do invitki na sv2011
Wygenerowano w 0.024 sekund, wykonano 65 zapytań