Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!
2013-11-26    Programowanie, C++, C, Asm, Poradnik

Post z nowej serii, w której będę tłumaczył różne aspekty programowania. Nie wiem jeszcze w jakim kierunku pójdzie ta seria, lecz na razie planu serię krótszych artykułów.

Pierwszym tematem jakim poruszę jest specjalne zastosowanie rejestru EAX.

Dla uproszczenia w tym poście będziemy przyjmować, że wartości zwracane są liczbami całkowitym i mieszczą się w 4 bajtach. Również będziemy rozpatrywać tylko funkcje w konwencji: cdecl oraz stdcall.

Jak wiemy, w c/c++ definicja funkcji ma poniższą postać:
     typ_zwracany nazwa(parametry)
     {
         //...
     }

Przykładowe zastosowanie:
     int a = funkcja();

Na niskim poziome będzie to wyglądało następująco:
     call funkcja
     mov [esp+a], eax

Wrzucając pod disasemblera daną funkcję zawsze przed końcowym C3(ret) jest właśnie umieszczenie wartości zwracanej w rejestrze EAX.

Podsumowując, każdy programista powinien wiedzieć, że wartość zwracana przez funkcję jest umieszczana w rejestrze EAX.
Dodaj komentarz:
Nick:
URL(opcjonalnie):