W kilku wątkach trwała dyskusja na temat zalet i wad różnych języków programowania mikroprocesorów. Padało wiele argumentów za i przeciw na podstawie posiadanej wiedzy, doświadczeń oraz preferowanej wygody podczas tworzenia programowania. Takie opisowe porównanie jest bardzo subiektywne i utrudnia rzetelną ocenę efektywności poszczególnych języków.
Zdecydowanie lepszą metodą byłoby wykonanie kilku praktycznych testów i porównanie np. wielkość generowanego kodu oraz czasu jego wykonania. Taka metoda pozwoliłaby np. porównać same języki (assembler, bascom, C), różne kompilatory a nawet porównywać możliwości różnych mikroprocesorów. To kwestia opracowania kilku prostych zadań do wykonania oraz chęci kilku Kolegów znających różne języki programowania oraz procesory.
Assembler AVR
- darmowe środowisko producenta procesorów AVR Studio
- brak gotowej arytmetyki na długich formatach 32, 64bit, float
C w środowisku WinAVR
- darmowy kompilator zintegrowany z AVR Studio
- dostępne formaty i arytmetyka na 64bit oraz float
C w codeVision
- płatne środowisko
~829zł, demo do 4kB kodu
- dostępny format i arytmetyka na float, brak formatu 64biy
Bascom AVR
- płatne środowisko
~478zł, demo do 4kB kodu
- dostępny format i arytmetyka float oraz format 8 bajtowy double
Zadanie testowe TEST_1
Prawie w każdym języku powstało oprogramowanie do obsługi syntezy na AD9951. Ciekawe jak wypadłoby porównanie funkcji obliczającej nastawę dla AD9951, ile kodu i czasu pochłonie taka pozornie prosta funkcja ?
Kod:
Test_1 - obliczenie nastawy dla AD9951
// zmienne globalne w RAM-ie procesora
f_clock= 400000000; //400MHZ na 4 bajtach
f_vfo = 20000000; // 20MHZ na 4 bajtach
FTW // nastawa dla DDS-a na 4 bajtach
FTW=2^32*f_vfo/f_clock // obliczenie nastawy dla DDS-a, wynik w FTW na 4 bajtach
//wynik testu:
- wielkość kodu w bajtach,
- ilość taktów procesora od RESET do umieszczenia danych w zmiennej FTW
Zapraszam do udziału w teście, mogę napisać funkcje w assemblerze i C-CodeVision na procesory AVR.