|PE..L.....aT....| 00000090  00 00 00 00 e0 00 0f 03  0b 01 02 16 00 0c 00 00  |................| 000000a0  00 1a 00 00 00 02 00 00  6c 12 00 00 00 10 00 00  |........l.......|

W tym przypadku możemy powiedzieć, iż: Nagłówek IMAGE_DOS_HEADER (rozpoczynający się od liter MZ) znajduje się na offsecie 0. String „This program cannot be run in DOS mode” znajduje się na offsecie 0x4E (stosując zapis heksadecymalny) lub 78 (stosując zapis dziesiętny). Nagłówek IMAGE_NT_HEADERS (rozpoczynający się od liter PE) znajduje się na offsecie 0x80 lub 128.

Pozycja w strukturze i tablicy Rozważmy następującą strukturę w języku C:

struct coords_t { int x; int y;

Zakładając, że typ int jest wielkości czterech bajtów, możemy powiedzieć, że: Pole x jest na offsecie 0 (względem początku struktury). Pole y jest na offsecie 4. Analogicznie jest w przypadku tablic:

int array = { 0, 10, 20, 30 };

W tym wypadku możemy powiedzieć, że wartość 20 znajduje się pod indeksem 2, ale pod offsetem 8 od początku tablicy (ponieważ oba poprzednie pola tablicy zajęły po cztery bajty). W przypadku dopowiedzenia, że offset zostanie wyrażony w 32-bitowych blokach, poprawnym będzie również powiedzenie, że wartość 20 znajduje się pod offsetem 2.

Przypisy

Kategoria:Asembler