kvs/тесты/вызов_функции/вызов_функции.квс

37 lines
1.5 KiB
Plaintext
Raw Normal View History

2026-06-27 14:11:25 +03:00
;./тесты/вызов_функции/вызов_функции.elf
;echo $? # должен быть 30
; ============================================================
; вызов_функции.квс - тест вызова функций и возврата
; ============================================================
.текст
.глобал _start
_start:
; Вызов функции с двумя аргументами
переместить_имм рдиай, 10 ; первый аргумент = 10
переместить_имм рсиай, 20 ; второй аргумент = 20
вызвать сложить_два_числа
; Результат в RAX — используем как код возврата
переместить рдиай, раикс ; первый аргумент sys_exit = результат
переместить_имм раикс, 60 ; sys_exit
вызов_системы
сложить_два_числа:
; Пролог
втолкнуть рбипи
переместить рбипи, рсипи
; Тело функции: сложить аргументы
прибавить рдиай, рсиай ; RDI += RSI
переместить раикс, рдиай ; результат в RAX
; Эпилог
переместить рсипи, рбипи
вытолкнуть рбипи
вернуться
.данные
тестовая_переменная: .байт 0