Aktywne Wpisy
mirko_anonim +1338
✨️ Obserwuj #mirkoanonim
Równo rok temu zmarł mój mąż i zarazem najlepszy przyjaciel. Ciągle muszę udawać, że jest lepiej, że chce żyć, a prawda jest taka, że codziennie marzę by umrzeć. Żebyśmy znów mogliby być razem.
Odszedł jako bohater , walcząc ze zbyt silnym przeciwnikiem- białaczką.
życie to #!$%@? niesprawiedliwy.
Musiałam się komuś tylko wygadac.
#zaloba
────────────────
Równo rok temu zmarł mój mąż i zarazem najlepszy przyjaciel. Ciągle muszę udawać, że jest lepiej, że chce żyć, a prawda jest taka, że codziennie marzę by umrzeć. Żebyśmy znów mogliby być razem.
Odszedł jako bohater , walcząc ze zbyt silnym przeciwnikiem- białaczką.
życie to #!$%@? niesprawiedliwy.
Musiałam się komuś tylko wygadac.
#zaloba
────────────────
Belbiteo +25
#niebieskiepaski #zdrada #rozowepaski
Myślę że mąż mnie zdradza. Sytuacja sprzed kilu dni: godzina 20, dzwoni mój telefon, odbieram a tam babka pyta czy może rozmawiać z Xy, podaję mu telefon (prowadzimy wspólnie firmę, mój numer jest telefonem firmowym więc żadna nowosc że ktoś dzwoni i chce z nim rozmawiać). Stary bierze tel i od razu się gotuję, kilka razy rozmowa jest rozlaczana (nie wiem przez kogo) babka ciągle dzwoni ponownie, on mówi
Myślę że mąż mnie zdradza. Sytuacja sprzed kilu dni: godzina 20, dzwoni mój telefon, odbieram a tam babka pyta czy może rozmawiać z Xy, podaję mu telefon (prowadzimy wspólnie firmę, mój numer jest telefonem firmowym więc żadna nowosc że ktoś dzwoni i chce z nim rozmawiać). Stary bierze tel i od razu się gotuję, kilka razy rozmowa jest rozlaczana (nie wiem przez kogo) babka ciągle dzwoni ponownie, on mówi
Aktywne Znaleziska
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
Czytam sobie specyfikację SystemV ABI dla AMD64 i w części 3.2.3 jest napisane:
2. If the class is INTEGER, the next available register of the sequence %rdi,%rsi, %rdx, %rcx, %r8 and %r9 is used.
Hmm, napisałem więc prostą funkcję i sprawdzam w asm jej wywołanie:
mov edi, 23
call square(int)
a po stronie samej funkcji:
mov DWORD PTR [rbp-4], edi
więc parametr ewidentnie leci przez rdi tak jak mówi specyfikacja.
Dlaczego zatem powszechnie się mówi że parametry są przekazywane przez stos, zamiast mówić że są przekazywane przez stos albo rejestry?
#programowanie #informatyka #cpp
Jeżeli uważasz że nie ma funkcji która w normalnych zastosowaniach przyjmuje więcej argumentów niż cpu ma rejestrów to popatrz chociażby na printf.
EDIT: Ale domyślnie z tego co widzę to 4 pierwsze argumenty też idą przez rejestry:
By default, the x64 calling convention passes the first four arguments to a function in registers.
Tutaj LINK.
https://en.wikipedia.org/wiki/X86_calling_conventions#cdecl
Ps a o xorowaniu pamięci pamiętałeś? :)
W System V ABI x86-64 konwencja sie zmienila i teraz masz gwarancje, ze niektore rejestry zachowaja swoja wartosc, stad tez 6 argumentow laduje w rejestrach, reszta w stacku.
Jeśli calling convention może zależeć od flag kompilatora, (jak fastcall dla MSCV) to różne object file mogą mieć różną calling convention na tym samym systemie z tą sama archiktekturą.
Jak wtedy wyglądala linkowanie tych pilków jesli odwołują się do funkcji w innych object plikach? Jeśli każdy object file może
int square(int, int)
co daje informacje o typie parametrów, ale nie mówi nic o ABI ani o calling convention ergo nie mówi to nic o tym czy przekazać parametry przez stos czy przez rejestry.
Chyba że o innym headerze mówisz a ja nie podumałem.