Wątek przeniesiony 2014-02-14 18:25 z C/C++ przez ŁF.

Jak są zrobione biblioteki Windows?

0

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.

1

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.

0

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.

0

Dzieki za wytłumaczenie:) a jak są tworzone nowe biblioteki np. wxWidgets to tez wszystko jest napisane w C++?

1

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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1