Продолжаю погружаться в глубины ассемблера и разбирать, как работают некоторые..

Продолжаю погружаться в глубины ассемблера и разбирать, как работают некоторые команды процессора. Сегодня разберём по косточкам команду CALL, которая выполняет вызов процедуры. Читать далее… 👉 https://dzen.ru/media/baseprogramming/alternativa-call-6440aa72b06d751a6506d68d

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

https://dzen.ru/media/baseprogramming/alternativa-call-6440aa72b06d751a6506d68d

Продолжаю забавы с ассемблером. Предыдущая статья из этой серии здесь. А сегодня о том, каким набором инструкций можно заменить команду CALL. Эта команда выполняет вызов процедуры. А замена её с помощью набора других команд поможет понять, как выполняется вызов процедуры в ассемблере и что при этом происходит. Итак, сначала пример с обычным вызовом процедуры: А теперь вызовем ту же процедуру, но без использования CALL: Как видите, всё достаточно просто. Нам надо лишь в том месте, где была CALL, создать какую-то метку (в нашем примере это ProcRET), которая будет использоваться как адрес возврата в программу из процедуры. А перед этой меткой добавить три команды. Первые две помещают в стек адрес возврата из процедуры, а третья выполняет безусловный переход на процедуру. Таким образом, эта часть программы будет работать так: Ну вот как-то так… На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.

Продолжаю погружаться в глубины ассемблера и разбирать, как работают некоторые..

vk3847689 April 23, 2023, 00:10 А, ret каким образом вытаскивае? из стека можно и копировать без освобождения, при том с любого места, а насколько я знаю любой push всегда подразумевает последующий обязательный рор.

vk-84357659 April 23, 2023, 01:57 [id3847689|Сергей], в этом и суть. Никто не может вас обязать применять РОР после PUSH. Этим можно пользоваться, если надо.

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

Похожий код:

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

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

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