В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
В языке ассемблера x86 инструкция выполняет безусловный переход. Такая инструкция переносит поток выполнения , изменяя счетчик программ . Существует ряд различных опкодов , которые выполняют переход; в зависимости от того, находится ли процессор в реальном режиме или защищенном режиме , и используется инструкция переопределения, инструкции могут принимать 16-битные , 32-битные или сегментные:смещенные указатели . [1]JMP
Существует множество различных форм переходов: относительные, условные , абсолютные и косвенные переходы через регистр .
Следующие примеры иллюстрируют:
(Обратите внимание, что хотя первый и второй переходы являются относительными, обычно вместо относительного смещения, закодированного в коде операции, отображается адрес назначения.)
Пример первый: загрузить IP с новым значением 0x89AB
, затем загрузить CS с 0xACDC
и IP с 0x5578
.
JMP 0x89AB JMP 0xACDC : 0x5578
Пример 2: Загрузка EIP со значением 0x56789AB1
только в защищенном или нереальном режиме .
JMP -0x56789AB1
Пример третий: переход к значению, хранящемуся в регистре EAX, только в защищенном режиме.
JMP EAX
Инструкция JMP
(Jump) передает управление программой в указанное место в коде. В отличие от вызовов функций, она не сохраняет возвращаемую информацию. Вместо этого она направляет выполнение на целевой адрес , который может быть:
Инструкция JMP
поддерживает четыре типа прыжков:
EIP
).CS
регистр).EIP
).JMP
может ссылаться на шлюз задачи или напрямую указывать сегмент состояния задачи (TSS) .rel8
), указывающее расстояние от текущего EIP
.CS
остается неизменным.EIP
).rel16
или rel32
), рассчитанное относительно текущего EIP
.Размер операнда
EIP
.8, 16, or 32 bits
) зависит от кода операции инструкции и атрибута размера операнда.CS
), иEIP
).Цель может быть указана:
ptr16:16
или ptr16:32
) в инструкции.m16:16
или m16:32
) и извлекается инструкцией.В защищенном режиме дальние прыжки можно использовать для:
CS
обновляется селектором целевого сегмента и EIP
смещением.EIP
загружаются из TSS.JMP
для переключения задач:EFLAGS
регистре не установлен .IRET
инструкцию.CALL
инструкции, которая позволяет возвращать задачу путем установки NT
флага и сохранения информации о ссылке на задачу.