Witam Wszystkich :)
Jestem nowym na tym forum i chciałbym dodać , że moja wiedza o programowaniu jest raczej na poziomie podstawowym.
I od pewnego czasu męczy mnie coś takiego.... Czy biblioteki do obsługi grafiki lub do obsługi serial portu czy USB są pisane w języku C czy może w asemblerze lub może jest to inaczej zrobione? Zainteresowało mnie to ponieważ od pewnego czasu programuje(amatorsko) mikrokontrolery w jezyku C i w mikrokontrolerze aby cokolwiek zrobić trzeba wpisywać bajty do poszczególnych rejestrów. W C++ używamy funkcji z bibliotek które też muszą używać rejestrów (tak mi się wydaje :)) i tak mnie interesuje jak to jest wszystko zrobione.Mam nadzieję, że da się zrozumieć o co mi chodzi. Pozdrawiam.
Czy biblioteki do obsługi grafiki lub do obsługi serial portu czy USB są pisane w języku C czy może w asemblerze lub może jest to inaczej zrobione?
Większość jest napisana w językach wysokiego poziomu (czytaj: C++). Taka biblioteka komunikuje się ze sterownikiem urządzenia, który też jest napisany w większości w C++, który, odwołując się do wewnętrznych mechanizmów systemu operacyjnego, może nie zawierać nawet linijki w asemblerze.
Asembler to język niskiego poziomu, w którym zazwyczaj jedna instrukcja asemblera odpowiada jednej instrukcji maszynowej.
W C i C++ kompilator tłumaczy kod źródłowy też na instrukcje maszynowe w pliku exe - więc cały kod przez nas pisany oczywiście operuje na rejestrach procesora, ale nie musimy ich znać: od tego jest kompilator by wygenerował za nas plik wykonywalny.
Inaczej to wygląda w językach, które działają na tzw. maszynie wirtualnej, jak Java, C#, Perl, Python, ...
Oczywiście pod Windows można pisać w asemblerze, to się jednak rzadko robi, chyba że bardzo zależy nam na wysokiej wydajności kodu i chcemy wykorzystać jakieś konkretne instrukcje (typu SSE4) które wyszły w najnowszych procesorach.
Bardzo niewiele jest rzeczy, które muszą być w asemblerze.
mikrokontrolery w jezyku C i w mikrokontrolerze aby cokolwiek zrobić trzeba wpisywać bajty do poszczególnych rejestrów
Tym zajmuje się sterownik danego urządzenia, oraz sam Windows. W naszym kodzie bezpośrednio do sprzętu się nie odwołujemy - nawet nie ma takiego dostępu.
Dzieki za wytłumaczenie:) a jak są tworzone nowe biblioteki np. wxWidgets to tez wszystko jest napisane w C++?
Dzieki za wytłumaczenie:) a jak są tworzone nowe biblioteki np. wxWidgets to tez wszystko jest napisane w C++?
No, nie wszystko, VCL jest napisane w Delphi ;-)
Są dwa podejścia w takich bibliotekach, z dowolną ilością stanów pośrednich:
• nakładka na WinAPI: wszystkie albo większość widocznych kontrolek jest kontrolkami wbudowanymi w Windowsa (przykład: Windows Forms)
• własne kontrolki: otwarcie okna i obsługa myszy i klawiatury odbywa się przez WinAPI, ale kontrolki są rysowane przez bibliotekę, graficznie mogą ale nie musza udawać natywnych kontrolek Windowsa (przykład: WPF)