Online: 0x08B (139)
haker.iиfø  — Etyczny hacking_
Spreading knowledge like a virus.

 haker.info Baza wiedzy

Asembler x86/x64
  • Kodowanie rozkazów procesora


Rozkaz procesora w formie tekstowej (np. MOV, ADD, XOR...) nazywany jest mnemonikiem. Natomiast zakodowana wartość liczbowa instrukcji to kod operacyjny (opkod). Na rysunku poniżej przedstawiono poszczególne elementy zakodowanej instrukcji procesora w formie schematu. Nie wszystkie składowe są wymagane. Istnieją instrukcje (NOP itp.), które mają tylko sam opkod, czyli ich zakodowana forma to jeden bajt o określonej wartości.

Kodowanie instrukcji procesora

Poniżej przedstawiono opis poszczególnych elementów formatu kodowania instrukcji procesora x64.
  • Prefiksy (w tym prefiks REX) – prefiks REX pozwala na dostęp do rozszerzonych oraz dodatkowych rejestrów procesora, czyli tych wprowadzonych w architekturze x64. Inne prefiksy związane są np. z operacjami na napisach czy też modyfikacją rozmiaru operandu oraz adresu.
  • Kod operacyjny (opkod) – wartość przypisana określonej instrukcji o rozmiarze od jednego do trzech bajtów.
  • ModR/M – bajt ten jest związany z typem adresowania oraz rodzajem operandów.
  • SIB – związany z bajtem ModR/M. Czasami użyte adresowanie wymaga tego bajtu. Zawiera trzy pola: skala, indeks oraz baza. Adres efektywny (liniowy) jest obliczany jako: baza + (indeks * skala) + ewentualne przesunięcie.
  • Przesunięcie (ang. offset) – nazywane też jako przemieszczenie (ang. displacement) to wartość liczbowa, która jest dodawana do podstawy adresu.
  • Wartość natychmiastowa (ang. immediate) – jeśli rozkaz procesora używa wartości natychmiastowej jako operandu to znajduje się ona w tym polu.

Przykładowe rozkodowane instrukcje procesora przedstawiono na rysunku poniżej.

Opkod mnemonik

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.