Skip to content

Latest commit

 

History

History
11 lines (11 loc) · 2.19 KB

File metadata and controls

11 lines (11 loc) · 2.19 KB

Простой эмулятор RISC-V

Описание

Перед вами очень простой эмулятор RISC-V. Он пока не предназначен (пока что) для использования в production, однако вам может быть интересно взглянуть на его исходный код! Это полностью образовательный проект, поэтому при разработке не использовался ИИ.

Как использовать?

Передайте эмулятору 64-битный исполняемый файл в ELF формате, и он попытается его обработать. Используйте опцию -n, чтобы указать имя ELF файла. Используйте опцию -d, чтобы запустить эмулятор в режиме отладки. Пока доступны только две команды: step N и reg xN/reg pc, но в будущем я добавлю больше!

Как собрать?

Просто используйте clang или gcc. Также вы можете воспользоваться прилагаемым скриптом для сборки эмулятора. Но будьте внимательны: используйте только компиляторы, поддерживающие тип __int128_t! (всякие MinGW и Visual Studio скорее всего не подойдут)

Как собрать ассемблерный код для тестирования эмулятора?

Лично я использую скрипт compileasm.sh. Он использует clang для компиляции ассемблерного кода RISC-V RV64M в исполняемый файл ELF. Но вы всегда можете использовать другой инструмент, если хотите!

Что он умеет?

На данный момент эмулятор понимает все инструкции RV64M, кроме инструкций, отвечающих за многопоточность и взаимодействие между harts.