Частина 12 - Вантажний ефективний адрес

Для повного змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті.

При виконанні бінарного коду в RAM операційна система відмапує код в сегмент даних, де вона знаходить вільне місце в пам'яті.

Вантажний ефективний адрес завантажує вказаний адресу пам'яті як вказівник будь-якої змінної. Наприклад:

lea rbx, my_var

Цей код завантажить адресу my_var  в rbx.

У C++ вказівник насправді додає те, чого користувач побачив би як одне, якщо щось було збільшено, однак воно насправді переміщує його на 2 байти вперед під поверхнею, припускаючи, що воно має довжину слова або 16 біт або 2 байти.

Те саме стосується і збірки.

У збірці кожен байт адресується. Наприклад:

lea rax, my_var

inc rax

mov word ptr [rax], rbx

Повімо, що значення 0x20 знаходиться в rbx. Цей вище інструкція розмістить значення 0x20 в несловесній межі, що призведе до помилки. Вам потрібно збільшити rax на 2, щоб цього уникнути.

Наступна неділя ми вийдемо в сегмент даних! Підтримуйте нас!

results matching ""

    No results matching ""