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?