124 lines
5.8 KiB
Plaintext
124 lines
5.8 KiB
Plaintext
;длин_тест0.квс
|
||
; Тест: один длинный переход и один мусорный сегмент
|
||
|
||
.текст
|
||
.глобал _start
|
||
|
||
_start:
|
||
; Инициализация регистра
|
||
переместить_имм раикс, 10 ; rax = 10 (не ноль)
|
||
|
||
; ПЕРВЫЙ ПЕРЕХОД: переход_если_не_ноль
|
||
; ZF=0 (так как rax=10), значит jnz сработает
|
||
; Прыгаем к метке 'вывести_сообщение', пропуская мертвый_код_1
|
||
переход_если_не_ноль вывести_сообщение
|
||
|
||
; --- МЕРТВЫЙ КОД 1 ---
|
||
; Этот код НЕ должен выполниться
|
||
; Добавляем много "мусора", чтобы точно выйти за пределы короткого перехода
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 2
|
||
переместить_имм рдиай, 2
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 3
|
||
переместить_имм рдиай, 3
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 4
|
||
переместить_имм рдиай, 4
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 5
|
||
переместить_имм рдиай, 5
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 6
|
||
переместить_имм рдиай, 6
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 7
|
||
переместить_имм рдиай, 7
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 8
|
||
переместить_имм рдиай, 8
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 9
|
||
переместить_имм рдиай, 9
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 10
|
||
переместить_имм рдиай, 10
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 11
|
||
переместить_имм рдиай, 11
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 12
|
||
переместить_имм рдиай, 12
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 13
|
||
переместить_имм рдиай, 13
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 14
|
||
переместить_имм рдиай, 14
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
переместить_имм раикс, 15
|
||
переместить_имм рдиай, 15
|
||
переместить_имм рсиай, msg_dead_1
|
||
переместить_имм рдикс, len_msg_dead_1
|
||
вызов_системы
|
||
; ---------------------
|
||
|
||
; --- КОД ОШИБКИ (на всякий случай) ---
|
||
; Если мы сюда попали, значит переход НЕ сработал (ошибка)
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, msg_fail
|
||
переместить_имм рдикс, len_msg_fail
|
||
вызов_системы
|
||
|
||
; --- ВЫВОД ЦЕЛЕВОГО СООБЩЕНИЯ ---
|
||
вывести_сообщение:
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, msg_success
|
||
переместить_имм рдикс, len_msg_success
|
||
вызов_системы
|
||
|
||
; --- ЗАВЕРШЕНИЕ ---
|
||
переместить_имм раикс, 60
|
||
переместить_имм рдиай, 0
|
||
вызов_системы
|
||
|
||
.данные
|
||
; Перемешиваем строки и константы
|
||
msg_success: .строка_нуль "Успех!\n"
|
||
.константа len_msg_success = 13
|
||
msg_dead_1: .строка_нуль "Мертвый код 1!"
|
||
.константа len_msg_dead_1 = 14
|
||
msg_fail: .строка_нуль "Ошибка: переход не сработал!"
|
||
.константа len_msg_fail = 28 |