(Interfejs binarny aplikacji) określa interfejs niskiego poziomu między programami, bibliotekami i systemem operacyjnym. Np. Które rejestry są używane do przekazywania parametrów funkcji.
Wiem, że „niezdefiniowane zachowanie” w C ++ może pozwolić kompilatorowi na zrobienie wszystkiego, co chce. Miałem jednak awarię, która mnie zaskoczyła, ponieważ uznałem, że kod jest wystarczająco bezpieczny. W takim przypadku prawdziwy problem wystąpił tylko na konkretnej platformie używającej określonego kompilatora i tylko wtedy, gdy włączono optymalizację. Próbowałem kilku rzeczy, …
Nigdy nie zrozumiałem jasno, czym jest ABI. Proszę nie kierować mnie do artykułu w Wikipedii. Gdybym mógł to zrozumieć, nie byłoby mnie tutaj, publikującego tak długi post. Oto moje zdanie na temat różnych interfejsów: Pilot do telewizora to interfejs między użytkownikiem a telewizorem. Jest istniejącym bytem, ale sam w sobie …
Jestem nowy w programowaniu w systemie Linux i natknąłem się na API i ABI podczas czytania Linux System Programming . Definicja API: Interfejs API definiuje interfejsy, za pomocą których jedno oprogramowanie komunikuje się z innym na poziomie źródła. Definicja ABI: Podczas gdy interfejs API definiuje interfejs źródłowy, interfejs ABI definiuje …
Czy są jakieś wady przekazywania struktur przez wartość w C, zamiast przekazywania wskaźnika? Jeśli struktura jest duża, istnieje oczywiście aspekt wydajności kopiowania dużej ilości danych, ale w przypadku mniejszej struktury powinno to być to samo, co przekazywanie kilku wartości do funkcji. Może być nawet bardziej interesujący, gdy jest używany jako …
Poniższe linki wyjaśniają konwencje wywołań systemowych x86-32 zarówno dla UNIX (smak BSD), jak i Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html Ale jakie są konwencje wywołań systemowych x86-64 w systemach UNIX i Linux?
W C ++ Dlaczego logiczny 1 bajt, a nie 1 bit? Dlaczego nie ma typów takich jak 4-bitowe lub 2-bitowe liczby całkowite? Brakuje mi powyższych rzeczy podczas pisania emulatora dla procesora
Jak przekazać obiekty klas, zwłaszcza obiekty STL, do iz biblioteki DLL C ++? Moja aplikacja musi współdziałać z wtyczkami innych firm w postaci plików DLL i nie mogę kontrolować, z jakim kompilatorem te wtyczki są zbudowane. Zdaję sobie sprawę, że nie ma gwarantowanego ABI dla obiektów STL i obawiam się …
Przygotowuję materiały szkoleniowe w języku C i chcę, aby moje przykłady pasowały do typowego modelu stosu. W jakim kierunku rozwija się stos C w systemach Linux, Windows, Mac OSX (PPC i x86), Solaris i najnowszych Uniksach?
Załóżmy, że mam trzy skompilowane obiekty, wszystkie wyprodukowane przez ten sam kompilator / wersję : A został skompilowany w standardzie C ++ 11 B został skompilowany w standardzie C ++ 14 C został skompilowany w standardzie C ++ 17 Dla uproszczenia załóżmy, że wszystkie nagłówki zostały napisane w C ++ …
Oglądam przemówienie Chandlera Carrutha w CppCon 2019: Brak abstrakcyjnych kosztów zerowych podaje w nim przykład tego, jak był zaskoczony tym, ile ponosisz koszty ogólne, używając std::unique_ptr<int>ponad int*; ten segment zaczyna się mniej więcej w punkcie czasowym 17:25. Możesz rzucić okiem na wyniki kompilacji jego przykładowej pary fragmentów (godbolt.org) - aby …
Rozważ następujący przykład: struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } Wygenerowany kod zestawu dla vector::empty(według clang, z optymalizacjami): push rax call vector::size() const test eax, eax sete al pop rcx ret Dlaczego przydziela miejsce na stosie? W ogóle …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.