kategorie: ANSI C, Asembler
[#1] VBCC i kompilowanie dla kick 1.3
Witam
Bawię się środowiskiem cross dev vbcc.
znalazłem toolchain VBCC pod windowsa. kompilowanie przykładu i uruchomienie go w winuae pod a1200 działa OK. Nie chcie natomiast działać na A500 z kickiem 1.3. próbowałem podlinkować startup13.o ale bez rezultatów.
pytanie ogólne - jak kompilować dla kicka 1.3?
TIA
[#2] Re: VBCC i kompilowanie dla kick 1.3

@retronav, post #1

Jeśli mnie pamięć nie zawodzi... to w archiwum z targetem AmigaOS 68k dla VBCC jest już wszystko co potrzebne, żeby kompilować pod Kick 1.3. Jest gotowy konfig, który nazywa się aos68k. W tym konfigu trzeba zmienić dwie rzeczy:
- startup.o na startup13.o
- jeśli jest przekazywany parametr -Rshort do linkera to wywalić go (w nowszych wersjach już chyba domyślnie nie jest)

Nota bene, autor VBCC nie wspiera go pod Windowsem i wszystkie istniejące na sieci kompilacje są nieoficjalne i w różnym stopniu zepsute. Jeśli się wie co się robi, to lepiej przygotować sobie takie środowisku samemu, w oparciu o źródła VBCC.

A tak w ogóle to kolega asman jest tu lokalnym ekspertem od VBCC pod Windows, może się wypowie .


Ostatnia aktualizacja: 22.04.2015 11:33:52 przez strim_
[#3] Re: VBCC i kompilowanie dla kick 1.3

@strim_, post #2

niestety nie widzę takiego configa w dystrybucji toolchaina która pobrałem.
domyśliłem się że chodzi o startup13.o i go ręcznie dodaję, dodaję też vc.lib i nawet się kompiluje. ale na a500 się nie uruchamia. daje komunikat:

unable to load test.exe : Error code 121

może to się kompiluje dla 68020? wujek google nie wiele mi na razie powiedział o tym błędzie 121.

ale...
no dobra przyznam się ... robię to na swojej kompilacji vbcc na moc os x.
toolboxa sciągnąłem aby upewnić się że na windzie zadziała tak samo jak na OS Xie.
dla startup.o wszystko działa ładnie i uruchamia się pod fs-uae bez problemu. dla a500 daje komunikat podany wyżej.
[#4] Re: VBCC i kompilowanie dla kick 1.3

@retronav, post #3

Usunąłeś -Rshort z konfiguracji tak jak powiedziałem? Relokacje typu short są obsługiwane (chyba) od Kicka 2.x dopiero.

Domyślnie jest używany plik vc.config jeśli nie specyfikujesz nazwy konfiguracji przy uruchamianiu vc.

Ostatnia aktualizacja: 22.04.2015 12:03:52 przez strim_
[#5] Re: VBCC i kompilowanie dla kick 1.3

@strim_, post #4

OK. moja wina... dopiero teraz zajrzałem do katalogu config i jest tam nawet config +kick13
kompilacja działa, program się uruchamia - tzn nie wywala błedu 121, ale uruchamia się i wychodzi sam z powrotem do CLI. testuję ten program przykładowy z toolchaina (copper + moduł P61).
mój przykładowy prosty programik też się uruchamia, ale rzuca guru, to jednak wina mojego kodu.

będę walczył dalej ale przynajmniej narzędzia crossdevu wiem że działają.
teraz będę miał serię innych już typowo amigowych pytań ;)
[#6] Re: VBCC i kompilowanie dla kick 1.3

@retronav, post #5

no to konkretne pytanie mi się pojawiło:

w assemblerze (oddzielny plik .asm) mam copperlistę pod etykietą copper:
chcę ją widzieć w kodzie w C więc wyeksportowałem sobie ją jako

w assemblerze
xdef _copper


a w kodzie w C
extern short* copper;


w zasadzie jak odczytam zmienną copper w c to widzę pierwszą wartość z copperlisty, ale nic poza tym. tzn chciałbym robić tak jak poniżej ale nic z tego nie wychodzi. dostaję zawsze wartość 1.

short a = copper[i];


coś robię nie tak ale co?
[#7] Re: VBCC i kompilowanie dla kick 1.3

@retronav, post #6

Wiele rzeczy tu nie rozumiem i dlatego mam trudność z napisaniem odpowiedzi. Po pierwsze nie wiem jakiego asemblera używasz, to szczegół.
Skoro w asemblerze masz copperlistę pod etykietą cooper to w jaki sposób działa Ci xdef na _copper, przecież to dwie różne etykiety. No chyba, że z prędkości zapomniałeś dopisać w tym poście znaczka _, co też zakładam. Ponadto żywię nadzieję, że copperlista siedzi w pamięci CHIP i asembler, którego używasz właściwie tworzy obiekt. Chodzi mi o błąd jaki ma Asm-One i chyba AsmPro jak tworzymy obiekt który możemy wykorzystać przy dowiązywaniu (linkowaniu). Następna rzecz, która przykuła moją uwaga to, że używasz short zamiast użyć UWORD (oczywiście by użyć UWORD, potrzebujesz dołączyć odpowiedni plik exec/types.h), co może też powodować kłopoty, szczególnie przy porównywaniu.
Nie podałeś też co dokładnie dzieje się ze zmienną i, jeśli jest zero to zawsze dostaniesz pierwszą wartość. Jeśli to nie sekret to zamieść kod źródłowy w przeciwnym razie napisz mi PM.
[#8] Re: VBCC i kompilowanie dla kick 1.3

@asman, post #7

Heh minął ponad miesiąc od ostatniego postu, ale z tematem na razie radzę sobię po prostu nie łącząc C i Asm'a. Całość tego co chciałem przećwiczyć robię w assemblerze i na razie działa.

Problemy jakie miałem są na styku Asm i C.
Odpowiadając na pytania (niektóre) używam vbcc i vasm
z tym podkreśleniem to albo ja czegoś nie rozumiem i jest wytłumaczenie, albo dzieje się tu jakaś magia... tzn jeśli w assemblerze (w pliku .asm) mam etykietę np copper to w kodzie w .c widzę ją jako _copper. sprawdziłem i tak to właśnie działa. w sumie nie wiem dla czego. posiłkowałem się przykładami znalezionymi w sieci i tam też tak to wyglądało.
zmienną i oczywiście zwiększam w pętli.

Co co generalnie chciałem osiągnąć to zdefiniować sobie w kodzie w assemblerze etykietę np copper: a z poziomu C pisać do pamięci zaczynającej się od tej etykiety wartości dla copperlisty (generowane programowo). pamięć allokuję oczywiście w chipie jako blk.w #rozmiar.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem