calling-convention

Jakie są konwencje wywoływania wywołań systemowych UNIX i Linux (i funkcji przestrzeni użytkownika) na i386 i x86-64

Poniższe linki wyjaśniają konwencje wywołań systemowych x86-32 zarówno dla Uniksa (BSD) jak i Linuksa: Http://www.int80h.o ... en/books/developers-handbook/x86-system-calls.html Ale jakie są konwencje wywołań systemowych x86 - 64 na Unixie i Linuksie?

Co to jest stdcall?

Uczę się programowania Win32, a prototypWinMain wygląda następująco: int WINAPI WinMain ( HINSTANCE instance, HINSTANCE pre ... am coś po typie powrotu. Do czego służy __stdcall? Co to znaczy, gdy istnieje coś pomiędzy typem zwracanym a nazwą funkcji?

Jak dokładnie działa callstack?

Staram się głębiej zrozumieć, jak działają niskopoziomowe operacje języków programowania, a zwłaszcza jak wchodzą one w inter ... ki sprawiają, że myślę, że nie do końca zrozumiałem, jak } dokładnie Działa stos i jak ściśle przestrzega } zasad LIFO {35]}.

cdecl czy stdcall w Windows?

Obecnie rozwijam bibliotekę C++ Dla Windows, która będzie dystrybuowana jako DLL. Moim celem jest maksymalizacja interoperacy ... ączyć się z moją biblioteką DLL poprzez" interfejsy", Czyste klasy wirtualne(zgodnie z opisanymi wzorcami, np. tutaj i tam ).

Czym są rejestry callee i caller saved?

Mam problem ze zrozumieniem różnicy między rejestrami callee i callee i kiedy z czego korzystać. Używam MSP430 : Procedura ... ów. To, co robi procedura, ma trwały wpływ na R12 po wywołaniu. Czy moje rozumienie jest poprawne? Brakuje mi innych rzeczy?

Dlaczego T* może zostać zaliczony do rejestru, a unikalny PST nie?

Oglądam rozmowę Chandlera Carruth ' a w CppCon 2019: Nie ma abstrakcji o zerowym koszcie W nim podaje przykład, jak był ... nt> ptr) noexcept { if (*ptr > 42) { bar(ptr.get()); *ptr = 42; } baz(std::move(ptr)); }

Jakie jest znaczenie i zastosowanie stdcall?

Natknąłem się na __stdcall ostatnio dużo. MSDN nie wyjaśnia bardzo jasno, co tak naprawdę oznacza, kiedy i dlaczego powinien być używany, jeśli w ogóle. Byłbym wdzięczny, gdyby ktoś podał Wyjaśnienie, najlepiej z przykładem lub dwoma.

Jakie są różne konwencje wywołania w C / C++ i co każdy z nich oznacza?

Istnieją różne konwencje wywoływania dostępne w C / C++: stdcall, extern, pascal, itd. Ile takich konwencji wywołujących jest dostępnych i co każdy z nich oznacza? Czy są jakieś linki, które je opisują?

Pobieranie nazwy metody wywołującej z wewnątrz metody [duplikat]

to pytanie ma już odpowiedzi tutaj : ... ckTrace, ale naprawdę nie podobało mi się uruchamianie całego śledzenia stosu za każdym razem, gdy ta metoda jest wywoływana.

Dlaczego Mac ABI wymaga 16-bajtowego wyrównania stosu dla x86-32?

Rozumiem ten wymóg dla starych systemów PPC RISC, a nawet dla x86-64, ale dla starych sprawdzonych x86? W tym przypadku stos ... bręczy. Dam ten temat kiedy indziej, a potem go zamknę... Powiązane To moja ramka, nie obchodzi mnie to. twoja rama stosu!

W jaki sposób zmienne argumenty są implementowane w gcc?

int max(int n, ...) Używam cdecl konwencji wywołania, w której wywołujący czyści zmienną po powrocie callee. Interesuje m ... zrobić makra va_end, va_start i va_arg praca? Czy wywołujący przekazuje adres tablicy argumentów jako drugi argument Maxowi?

Dlaczego %eax jest zerowany przed wywołaniem printf?

[[12]}próbuję podnieść mały x86. Kompiluję na 64-bitowym Macu z gcc-S-O0. Kod W C: printf("%d", 1); Wyjście: movl $ ... oc(int p1), gcc nie widzi potrzeby przygotowania %eax. Zastanawiam się więc, dlaczego gcc traktuje printf i testproc inaczej.

Czy" asmlinkage " jest wymagany do wywołania funkcji c z assembly?

Piszę funkcję C, która będzie wywoływana z kodu assembly. (w szczególności chcę wykonać pewne zadanie sprawdzające w ścieżc ... zcie, czy ktoś może polecić jakieś zasoby / książki, do których mogę się odwoływać dla takiego programowania mix assembly/C?