ebreak
lyszt.net охватывает ebreak и другие инструкции RISC-V более подробно.
Описание
ebreak останавливает программу. Название — сокращение от environment break (прерывание окружения). Он отмечает точку, в которой управление берёт на себя отладчик, и этот симулятор останавливает выполнение на этой строке. Форма не принимает операндов.
ebreak
Процессор останавливается там, и строки после неё не выполняются. Регистры и память сохраняют свои значения, поэтому состояние в точке останова можно исследовать afterward. ecall со службой 10 завершает программу обычным образом, а ebreak останавливает её в выбранном месте.
Руководство RISC-V описывает ebreak как возврат управления среде отладки и определяет его вместе с ecall, который запрашивает у окружения службу. Оба вызывают точную запрошенную ловушку — намеренную передачу управления окружению.
Пример устанавливает t0 в 1 и выполняет ebreak. Следующая за ней li никогда не выполняется, поэтому t0 остаётся равным 1.
Пример
li t0, 1 ebreak # the program stops here li t0, 2 # never reached
