Что означает «короткий» прыжок на ассемблере? - PullRequest
16 голосов
/ 22 апреля 2011

Что означает «КОРОТКИЙ» в этом коде?

JE SHORT 00013FB8

Ответы [ 4 ]

16 голосов
/ 22 апреля 2011

Короткие прыжки (и ближние вызовы) - это прыжки, цель которых находится в том же модуле (они являются внутримодульными, однако возможно получить интермодульные варианты от определенных хаков), они чаще всего составляют до 127 байт относительного смещения (ониизмените поток выполнения вперед или назад от адреса инструкции), однако есть 16-битные варианты, предлагающие 32 КБ.Вам не нужно особо беспокоиться об этом, о его действительно избыточной информации, но в руководствах для разработчиков Intel (тома 2a и 2b, в частности 2a) будут рассмотрены ужасные подробности

2 голосов
/ 05 января 2019

Короткий прыжок может быть достигнут с использованием относительного смещения от текущей инструкции по сборке.Для x86 / 32-битных это 2-байтовая инструкция, где первый байт всегда равен EB для короткого перехода, а второй байт - это число байтов до или после текущая инструкция для перехода.Второй байт - это знаковое 8-битное число, поэтому самый дальний краткий переход на x86 составляет +/- 127 байт.Все, что дальше +/- 127 байт, является прыжком в длину, E9 и должно использовать полный 32-битный адрес;в результате получается 5-байтовая инструкция.

Об этом важно помнить, если вы выполняете встроенное исправление кода сборки.

ex.EB 0 будет переходить к коду операции после короткого перехода, а не к самой строке кода.

ex.EB 7F - самый дальний прыжок вниз.

1 голос
/ 22 апреля 2011

Это означает, что он не прыгает очень далеко. В зависимости от дизассемблера, число после этого будет либо адресом, на который он переходит, либо относительным смещением, которое говорит вам, сколько байтов находится между следующей инструкцией и целью перехода.

0 голосов
/ 24 октября 2017

короткий переход находится в загрузке ПК, это означает, что 2-байтовая длинная инструкция по сборке указывает процессору переходить по адресу 100h в BIOS, чтобы начать загрузку.

...