Почему CALLSTACK так важен? Учебник по ассемблеру для начинающих | Программирование архитектуры x...
Автор: Mxy
Загружено: 2025-10-18
Просмотров: 3315
Описание:
;########################
;# КОД ДЛЯ КОПИРОВАНИЯ И ВСТАВКИ:
;#######################
.intel_syntax noprefix
.global _start
.text
_start:
lea r15, [resume_here]
jmp print_hello
resume_here:
jmp exit
exit:
mov rax, 60 ;# код системного вызова для выхода
xor rdi, rdi ;# обнуление rdi
syscall ;# выполнение системного вызова
print_hello:
mov rax, 1 ;# запись
mov rdi, 1 ;# вывод на терминал
lea rsi, [hello] ;# начало строки
lea rdx, [hello_len] ;# длина строки
syscall ;# выполнить/вызвать ядро
lea r15, [resume_hello]
jmp print_goodbye
resume_hello:
jmp r15
print_goodbye:
mov rax, 1
mov rdi, 1
lea rsi, [goodbye]
lea rdx, [goodbye_len]
системный вызов
jmp r15
.data
hello: .ascii "привет, мир!\n"
hello_len = . - hello
goodbye: .ascii "до свидания!\n"
goodbye_len = . - до свидания
;# КОНЕЦ КОДА
;########################
Ссылка на эмулятор: https://x64.halb.it
Следующее видео: • IF STATEMENTS & Loops in Assembly | Condit...
ПЕРВОЕ видео курса: • Learn Assembly For Beginners | Introductio...
ПРЕДЫДУЩЕЕ видео курса: • How to Make Functions in Assembly: The JMP...
00:00 Почему функции не работают без стека вызовов?
01:09 Бесконечный цикл!
02:24 Как работают стеки вызовов
5:54 Проблема бесконечного цикла в коде
7:27 Кодирование стека вызовов на ассемблере
18:13 Использование настоящего стека вызовов
22:30 Команды стека: PUSH и POP
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: