kategoria: ANSI C
[#1] vbcc 0.9e - bug optymalizatora?
Cześć,

mam taki oto kawałek kodu:
#include <stdio.h>
#include <hardware/cia.h>

volatile __far struct CIA* const ciaa = (struct CIA*)0xbfe001;

int main()
{
  printf("Hello\n");
  while((ciaa->ciapra & 0x40) != 0) {}
  printf("Bye\n");
  return 0;
}

Gdy kompiluję, go w następujący sposób:
vc -c99 -O1 -cpu=68020 -o test.exe test.c

wszystko działa tak jak powinno: program wypisuje "Hello", po czym czeka na naciśnięcię lewego przycisku myszy, a następnie wypisuje "Bye".

Gdy jednak zwiększę poziom optymalizacji:
vc -c99 -O2 -cpu=68020 -o test.exe test.c

program wypisuje tylko "Hello", po czym się zawiesza.

Czy błąd leży, tak jak przypuszczam, po stronie vbcc, czy może ja coś pokręciłem? A jeśli to vbcc, to wiecie może, czy często zdarza mu się "namieszać" przy próbie optymalizacji?

Z góry dzięki za pomoc!
[#2] Re: vbcc 0.9e - bug optymalizatora?

@MasterM, post #1

A może jest też sposób na czekanie na naciśnięcie dowolnego klawisza (nie tylko ENTERa)?
[#3] Re: vbcc 0.9e - bug optymalizatora?

@MasterM, post #1

Spróbuj zdeasemblować skompilowany kod i zobaczyć co się dzieje.

U mnie następujący kod zachowuje się poprawnie pod GCC: hardware.h

A jeśli to vbcc, to wiecie może, czy często zdarza mu się "namieszać" przy próbie optymalizacji?


Optymalizacje VBCC są mówiąc łagodnie dość marne. Ani ja ani Kiero nie używamy tego badziewa. GCC 2.95.3 i SAS/C 6.58 biją go na głowę - przy czym potrafią się wzajemnie uzupełniać. Jeśli zależy Ci na dobrej jakości kodzie wynikowym to nie tędy droga
[#4] Re: vbcc 0.9e - bug optymalizatora?

@MasterM, post #1

Jeśli masz problemy z deasemblacją to wyślij mi te obydwa pliki to je obadam. Jeśli będzie błąd, to trzeba będzie napisać mejla do Franka Wille i on zaradzi tej sprawie.
[#5] Re: vbcc 0.9e - bug optymalizatora?

@cahir, post #3

Hehe, a strim mnie namawiał na VBCC... Ale ja sobie skompilowałem nim oraz GCC 2.95.3 helloworlda z własnym kodem startowym, zdisasemblowałem obie binarki, porównałem... VBCC został na dysku w charakterze ciekawostki przyrodniczej... Szybszy od GCC specjalnie też nie jest, może trochę mniej potrzebuje pamięci do pracy, ale w dzisiejszych czasach mieć 64 czy 128 MB RAM to żaden problem .
[#6] Re: vbcc 0.9e - bug optymalizatora?

@Krashan, post #5

No cóż... ale przynajmniej VBCC jest stale rozwijany w przeciwieństwie do gcc68k. No chyba ze się mylę co do gcc. Myślę że zgłaszanie błędów do autora jest dobrą metodą na poprawę VBCC. Może się okazać że przy aktywnym współdziałaniu użytkowników i autora wkrótce będzie równie dobry jak gcc... a być może nawet lepszy. A tak generalnie ASM rulez !
[#7] Re: vbcc 0.9e - bug optymalizatora?

@pisklak, post #6

ale przynajmniej VBCC jest stale rozwijany w przeciwieństwie do gcc68k
Tak, ale w przypadku programowania na retroplatformach to ma niewielkie znaczenie.
[#8] Re: vbcc 0.9e - bug optymalizatora?

@pisklak, post #6

No cóż... ale przynajmniej VBCC jest stale rozwijany w przeciwieństwie do gcc68k.

Miałoby to znaczenie, gdyby jego rozwój miał wpływ na jakość generowanego kodu.

No chyba ze się mylę co do gcc.

I tak, i nie. Otóż w głównej gałęzi gcc generowanie kodu z C / C++ / Objective-C / Objective-C++ / Java / Fortran / Ada / Go do m68k nadal jest wspierane. Gorzej sprawa ma się z amigowymi łatkami na gcc, które faktycznie trzeba by było przepisać od zera.

Myślę że zgłaszanie błędów do autora jest dobrą metodą na poprawę VBCC.

Dokładnie! Zawsze należy wspierać projekty na tyle na ile się potrafi.

Może się okazać że przy aktywnym współdziałaniu użytkowników i autora wkrótce będzie równie dobry jak gcc... a być może nawet lepszy.

O naiwności! GCC aktywnie rozwijają setki programistów, a spora część ich pracy to optymalizacja kodu niezależna od procesora. Obawiam się, że Volker Barthelmann nie ma takich sił przerobowych by VBCC kiedykolwiek dogoniło GCC.

A tak generalnie ASM rulez !

A jak produktywnie i szybko można w nim napisać dużą aplikację!
[#9] Re: vbcc 0.9e - bug optymalizatora?

@cahir, post #8

W sytuacji gdy nikt się nie zajmuje tymi amigowymi łatkami a VBCC stale się rozwija.... no może to trochę nazbyt optymistyczny ale jednak możliwy scenariusz.
A co do pisania dużych aplikacji w ASMie - fakt, języki wyższego poziomu lepiej się do tego nadają. Najlepiej robić chyba mixa C/ASM. Co nie znaczy że się nie da - taka RIVA np. to czysty assembler. Chociaż dla niektórych taka RIVA to zaledwie pchełka a nie duży program
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