Online: 0x022 (34)
haker.info  — Etyczny hacking_
Spreading knowledge like a virus.

 haker.info Baza wiedzy

Asembler x86/x64
  • Stos programu

W programowaniu okre┼Ťlenia stos u┼╝ywa si─Ö na struktur─Ö danych typu LIFO (Last In ÔÇô First Out). Element, kt├│ry jest od┼éo┼╝ony jako ostatni zostanie odczytany w pierwszej kolejno┼Ťci.

J─Özyk Asembler posiada dwie g┼é├│wne instrukcje, kt├│rych przewa┼╝nie u┼╝ywa si─Ö do odk┼éadania warto┼Ťci na stos oraz ich zdejmowania. Rozkaz PUSH zmniejsza warto┼Ť─ç wska┼║nika stosu i odk┼éada warto┼Ť─ç. Natomiast rozkaz POP zwi─Öksza warto┼Ť─ç wska┼║nika stosu i zdejmuje ostatnio od┼éo┼╝on─ů warto┼Ť─ç. Wska┼║nik stosu to wcze┼Ťniej przedstawiony rejestr o nazwie RSP. W prostych s┼éowach: stos programu jest obszarem pami─Öci do przechowywania r├│┼╝nych danych zwi─ůzanych cz─Östo z wywo┼éaniami funkcji.

Podstawowe elementy jakie znajdziemy na stosie programu w architekturze x64 to m.in.:

  • argumenty funkcji od┼éo┼╝one na stos,
  • miejsce na argumenty przekazywane przez rejestry RCX, RDX, R8 oraz R9,
  • adres powrotu od┼éo┼╝ony przez instrukcj─Ö CALL.

Wspomn─Ö tutaj przy okazji o poj─Öciu, kt├│re mo┼╝na spotka─ç w r├│┼╝nych miejscach i warto je zna─ç. Chodzi o ramk─Ö stosu (ang. stack frame). Ramka stosu to struktura umieszczona na stosie, kt├│ra przechowuje dane zwi─ůzane z wywo┼éaniem okre┼Ťlonego podprogramu (funkcji), czyli wcze┼Ťniej wymienione argumenty, adres powrotu itd.

Kto┼Ť mo┼╝e zapyta─ç dlaczego na stosie znajduje si─Ö adres powrotny, miejsca na argumenty przekazywane przez cztery rejestry (RCX, RDX, R8 oraz R9) oraz miejsce na dodatkowe argumenty? Zwi─ůzane jest to z cechami architektury x64 oraz konwencji wywo┼éa┼ä funkcji (tutaj Microsoft x64). Zatem ramka i stos nie zawsze musz─ů wygl─ůda─ç i by─ç u┼╝ywane tak samo.

stack x64

Dawid Farbaniec

Wykaz literatury (bibliografia)

  • Advanced Micro Devices Inc., 2017 ÔÇô AMD64 Architecture Programmer's Manual
  • Intel Corporation, 2019 ÔÇô Intel 64 and IA-32 Architectures Software Developer's Manual
  • Randall Hyde, 2010 ÔÇô Asembler. Sztuka programowania. Wydanie II, ISBN: 9788324628544
Wszystkie tre┼Ťci umieszczone na tej witrynie s─ů chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawarto┼Ťci tej witryny bez zgody autora. Wszelkie opublikowane tutaj tre┼Ťci (w tym kody ┼║r├│d┼éowe i inne) s┼éu┼╝─ů wy┼é─ůcznie celom informacyjnym oraz edukacyjnym. W┼éa┼Ťciciele tej witryny nie ponosz─ů odpowiedzialno┼Ťci za ewentualne niezgodne z prawem wykorzystanie zasob├│w dost─Öpnych w witrynie. U┼╝ytkownik tej witryny o┼Ťwiadcza, ┼╝e z zamieszczonych tutaj danych korzysta na w┼éasn─ů odpowiedzialno┼Ť─ç. Wszelkie znaki towarowe i nazwy zastrze┼╝one zosta┼éy u┼╝yte jedynie w celach informacyjnych i nale┼╝─ů wy┼é─ůcznie do ich prawnych w┼éa┼Ťcicieli. Korzystaj─ůc z zasob├│w witryny haker.info o┼Ťwiadczasz, ┼╝e akceptujesz powy┼╝sze warunki oraz polityk─Ö prywatno┼Ťci.