Menu
Coddy logo textTech

Коды завершения

Часть раздела Основы путешествия по Assembly на Coddy — урок 33 из 45.

Когда ваша программа завершает работу, она отправляет небольшое число обратно операционной системе. Это число называется кодом выхода или статусом выхода.

Почему важны коды завершения:

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

Коды завершения также помогают в отладке. Вы можете использовать разные коды ошибок для разных проблем.

Вы также можете объединять программы в цепочки, чтобы одна программа запускалась только в том случае, если предыдущая завершилась успешно. Оболочка проверяет код завершения перед запуском следующей команды.

Правила кодов завершения:

Код завершенияЗначение
0Успех — всё сработало
1-255Что-то пошло не так

Выбор кодов ошибок:

Вы можете использовать любое число от 1 до 255. Что означает каждое число, решать вам как программисту.

Код выходаЧто это может означать
1Общая ошибка
2Отсутствует входной файл
3Доступ запрещен
4Сетевая ошибка

 

Что произойдет, если вы не установите код выхода?

Вы всегда должны устанавливать rdi перед системным вызовом exit. Если вы забудете, rdi будет содержать любой мусор, оставшийся в регистре, и ваша программа завершится со случайным кодом.

challenge icon

Задание

Напишите полную программу на ассемблере, которая завершается с кодом выхода 2 (чтобы просигнализировать "file not found").

Код для вывода сообщения уже предоставлен. Вам нужно только добавить системный вызов exit.

Попробуйте сами

section .data
    msg db 'Backup complete', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    ; Вывести сообщение (предоставлено тестовой средой)
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msgLen
    syscall

    ; Код студента должен быть здесь
    %include "solution.asm"
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы