Напишите или откройте программу
Начните с примера, напишите свой код или откройте файл .s. Данные размещайте под .data, а код — под .text.
Пишите на ассемблере RV32IM с метками и псевдоинструкциями, затем запускайте на полной скорости или по одной инструкции.
Ставьте точки останова, делайте шаг назад и следите за регистрами, памятью, машинным кодом и консолью во время работы программы.
Загрузка симулятора RISC-V…
Начните с примера, напишите свой код или откройте файл .s. Данные размещайте под .data, а код — под .text.
Нажмите «Запуск» для полной скорости или «Шаг», чтобы выполнить одну инструкцию и увидеть, какие регистры и память изменились. Щёлкните рядом с номером строки, чтобы поставить точку останова.
Ввод и вывод происходят в консоли. Проверяйте регистры и память, делайте шаг назад, чтобы найти, где всё пошло не так, и копируйте машинный код в hex.
Ушли на шаг дальше? «Шаг назад» отменяет последние инструкции вместе с регистрами, памятью и выводом, так что можно посмотреть снова, не запуская с начала.
call перезаписывает ra. Функция, вызывающая другую, должна сначала сохранить ra в стеке и восстановить его перед ret, как в примере с факториалом.
Вкладка машинного кода считает, сколько раз выполнялась каждая инструкция. Тело цикла, выполненное на раз больше или ни разу, прямо указывает на неверное ветвление.
Нужна иллюстрация архитектуры процессора или ролик для курса? Создайте их с WaveSpeed AI.
Создавайте иллюстрации в стиле схем и обложки для слайдов и лабораторных отчётов.
Превратите идею в короткий обучающий ролик для занятия.
Превратите эскиз платы или корпуса микросхемы в 3D-модель.
$1 бесплатных кредитов для подходящих новых аккаунтов. Карта не нужна. Для генераторов нужны отдельный аккаунт и кредиты. Инструмент «симулятор RISC-V» бесплатный.
Да. Этот онлайн-симулятор RISC-V бесплатен: без аккаунта, без ограничений на запуски, ничего не нужно устанавливать.
Базовый 32-битный целочисленный набор (RV32I), расширение M для умножения, деления и остатка, а также чтение счётчиков cycle, time и instret — основной набор инструкций, который изучают на курсах по архитектуре ЭВМ и ассемблеру.
Большинство — да. Код начинается с 0x00400000, данные — с 0x10010000, а системные вызовы используют те же номера (a7 = 1 печать целого, 4 печать строки, 5 чтение целого, 10 выход и так далее), что и распространённые учебные симуляторы. Все они перечислены на вкладке «Справка».
Поместите номер вызова в a7, а аргумент — в a0, затем выполните ecall. Когда программа читает, консоль запрашивает ввод: введите его и нажмите Enter. Можно вводить и заранее, до запроса программы.
Число инструкций точное. Число тактов — оценка для простого ядра с последовательным исполнением: 1 такт на инструкцию, 2 на загрузку, 3 на переход или выполненное ветвление, 3 на умножение и 33 на деление.
Да. Вкладка «Машинный код» показывает адрес, hex-слово и декодированную форму каждой инструкции. Скопируйте его в hex, по одному слову на строку, или скачайте .hex либо «сырой» файл .bin.
Слова нужно читать и записывать по адресам, кратным 4, а полуслова — кратным 2. Поставьте .align 2 перед данными из слов или проверьте вычисленный адрес. В ошибке указаны адрес и строка.
Да. «Шаг назад» отменяет до 4 096 последних инструкций вместе с регистрами, памятью и выводом, так что ошибку можно найти, не запуская с начала.
Нет. Сборка и выполнение происходят в браузере, а программа сохраняется в хранилище этого браузера, так что в следующий раз она будет на месте.
Бесплатно, конфиденциально и всегда под рукой.