kategoria: ANSI C
[#1] GCC: Jak skompilować kod assemblera i połączyć z C
Piszę sobie coś w C. Używam crosskompliacji GCC win->m68k. Mam jedną funkcję (konwersja c2p) którą pewnie mógłbym zastąpić dużo szybszą w assemblerze. Mam kilka takich funkcji z netu. Tylko, że GCC nie chce ich skompilować. Wygląda na to, że assembler z GCC jest inny niż użyty w tych funkcjach. Jakieś rady? Czy można jakoś wymusić aby GCC użył innego dialektu assemblera?
[#2] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@sando, post #1

Można zwyczajnie zlinkować taką konwersję jako obiekt .o skompilowaną w innym kompilatorze.


Ostatnia aktualizacja: 09.11.2015 22:03:00 przez Artur Jarosik
[#3] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@sando, post #1

Pewnie masz na myśli to, że GNU as z pakietu binutils (czyli ten używany przez gcc), ma inną składnie niż assemblery 68k na amigę.

Musisz przepisać funkcję do akceptowanej przez GNU as'a składni. Albo zamiast GNU as użyć vbcc+vasm który akceptuje obie składnie assemblera (i więcej) ;).
[#4] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@strim_, post #3

strim_
Pewnie masz na myśli to, że GNU as z pakietu binutils (czyli ten używany przez gcc), ma inną składnie niż assemblery 68k na amigę.

Tak, dokładnie o to chodzi.

Musisz przepisać funkcję do akceptowanej przez GNU as'a składni. Albo zamiast GNU as użyć vbcc+vasm który akceptuje obie składnie assemblera (i więcej) ;).

Czy mam rozumieć, że lepiej się przesiąść z GCC na VBCC+VASM? Przynajmniej jeśli chodzi o programowanie na amisystemy?

Artur Jarosik
Można zwyczajnie zlinkować taką konwersję jako obiekt .o skompilowaną w innym kompilatorze.

Ściągnąłem sobie binarkę VBCC+VASM, i pod UAE skompilowałem ten plik assemblerowy do pliku .o bez problemów. Tylko potem (już z powrotem pod win) crosskompilator GCC jakby nie rozpoznaje formatu tego pliku. Jak wrócę do domu to podam dokładnie jaki błąd wypisuje GCC.
[#5] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@sando, post #4


Czy mam rozumieć, że lepiej się przesiąść z GCC na VBCC+VASM? Przynajmniej jeśli chodzi o programowanie na amisystemy?


Ilu programistów, tyle opinii na ten temat.


Ściągnąłem sobie binarkę VBCC+VASM, i pod UAE skompilowałem ten plik assemblerowy do pliku .o bez problemów. Tylko potem (już z powrotem pod win) crosskompilator GCC jakby nie rozpoznaje formatu tego pliku.


Domyślny format pliku .o generowany przez vbcc/vasm specyficzny dla tego toolchainu, więc nie zlinkujesz go za pomocą GNU ld. Ale jest w tym toolchainie linker vlink, za pomocą którego możesz zlinkować obiekty wygenerowane przez gcc i vasm/vbcc. Prawdopodobnie, nie żebym sam probował to robić. W każdym razie vlink jest super elastyczny.

Tutaj na forum koledzy Asman i Cahir zdaje się, że zbudowali toolchain vbcc/vasm jako kross-kompilator windows->m68k, to się może wypowiedzą.


Ostatnia aktualizacja: 10.11.2015 09:48:37 przez strim_
[#6] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@sando, post #4

Czy mam rozumieć, że lepiej się przesiąść z GCC na VBCC+VASM? Przynajmniej jeśli chodzi o programowanie na amisystemy?


Niekoniecznie. Optymalizacje GCC są dużo lepsze. Osobiście łączę kod z GCC i VASM'a bez problemów. Wystarczy dodać następujące opcje do VASM'a: "-Faout -phxass".
[#7] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@cahir, post #6

cahir, strim_ - dzięki

Jak wrócę do domu spróbuje z opcją "-Faout -phxass"
[#8] Re: GCC: Jak skompilować kod assemblera i połączyć z C

@sando, post #7

Zadziałało Przetestowałem też różnicę szybkości. Ta funkcja c2p w assemblerze jest 7x szybsza niż to co mi się udało osiągnąć w C. Więc to ogromna różnica. Jest czego się uczyć

Dziękuję koledzy

Ostatnia aktualizacja: 11.11.2015 18:32:09 przez sando
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