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

 haker.info Baza wiedzy

Asembler x86/x64
  • Adresowanie operandów

W celu uzyskania dost臋pu do okre艣lonego miejsca w pami臋ci lub rejestru procesora nale偶y zapozna膰 si臋 z metodami adresowania. Poni偶ej przedstawiono sposoby adresowania operand贸w w Asemblerze x64. Dla nie znaj膮cych jeszcze instrukcji Asemblera wprowadz臋 tutaj opis instrukcji kopiowania warto艣ci z jednego operandu do drugiego. Jest to instrukcja MOV i ma nast臋puj膮c膮 sk艂adni臋: MOV operand docelowy, operand 藕r贸d艂owy.

Adresowanie natychmiastowe polega na podaniu jako operand warto艣ci liczbowej nazywanej w艂a艣nie warto艣ci膮 natychmiastow膮. Zatem zapis MOV RAX, 7 wpisuje warto艣膰 7 do rejestru akumulatora RAX.

  • Adresowanie rejestrowe polega na podaniu jako operand nazwy rejestru np. MOV RAX, RCX. Zapis ten kopiuje warto艣膰 rejestru RCX do rejestru RAX.
  • Adresowanie po艣rednie polega na podaniu jako operand adresu w pami臋ci spod kt贸rego ma by膰 pobrana warto艣膰 np. MOV RAX, qword ptr [zmienna].
  • Adresowanie po艣rednie rejestrowe polega na podaniu jako operand rejestru w kt贸rym jest adres kom贸rki w pami臋ci np. MOV RAX, qword ptr [RCX].
  • Adresowanie po艣rednie z przesuni臋ciem polega na podaniu dodatkowo warto艣ci przesuni臋cia (ang. offset) np. MOV RAX, qword ptr [RCX+2] czy te偶 MOV RAX, qword ptr [zmienna+2].
  • Adresowanie bazowo-indeksowe polega na podaniu bazy i dodania do niej indeksu. Indeks mo偶e by膰 pomno偶ony przez skal臋 1, 2, 4 czy 8 zale偶nie od rozmiaru elementu np. MOV RAX, qword ptr [RDX+RDI*8]. Opcjonalnie te偶 przesuni臋cie.

Warto doda膰, 偶e architektura x64 wprowadzi艂a adresowanie relatywne do wska藕nika instrukcji (RIP). Pozwala to 艂atwiej tworzy膰 kod niezale偶ny od miejsca w pami臋ci (relokowalny czy wstrzykiwalny). Asembler MASM64 ma to domy艣lnie*.

*Asembler MASM64 (ML64.EXE) korzysta z adresowania relatywnego do wska藕nika instrukcji w spos贸b domniemany (ang. implicit).

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.