Ранее я рассказывал о том, как и чем можно заменить команду RET. Сегодня тот же..

Ранее я рассказывал о том, как и чем можно заменить команду RET. Сегодня тот же вопрос, но для команды JMP. Хотя на первый взгляд это совершенно ненужные знания, но на самом деле изучение этих вещей позволяет лучше понять, как работают компьютерные системы. Читать далее… 👉 https://dzen.ru/media/baseprogramming/alternativa-jmp-6430cc221f1a750d75fe3788

Альтернатива JMP

https://dzen.ru/media/baseprogramming/alternativa-jmp-6430cc221f1a750d75fe3788

Ранее я писал о том, чем можно заменить команду RET. Сегодня тот же вопрос, но для команды JMP. Допустим, у нас есть такая программа: Программа совершенно бессмысленная. Более того, она никогда не завершится, потому что с помощью команды JMP мы всё время возвращаемся в начало программы. Однако некий смысл в этой программе всё же есть — она показывает, как используется инструкция JMP. А вот в следующем примере мы получаем тот же результат, но без использования JMP: То есть сначала мы адрес метки start записываем в стек. И это будет точка возврата из процедуры. А потом вызываем команду RET, которая выполняет выход из процедуры на адрес, указанный в вершине стека. Таким образом, несмотря на то, что никакой процедуры в программе нет, и тем более мы её не вызывали, мы “обманули” процессор, подсунув ему адрес несуществующей процедуры и выполнив команду выхода из процедуры. То есть фактически мы выполнили безусловный переход — те же действия, которые выполняет команда JMP. Спросите — зачем эт

Ранее я рассказывал о том, как и чем можно заменить команду RET. Сегодня тот же..

Автор: Основы программирования

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий