Repository navigation
Vision
Идея
CdM-16 — учебная 16-битная процессорная архитектура для изучения устройства процессоров, машинных инструкций и ассемблера.
QEMU — эмулятор, который моделирует процессор, память и устройства, позволяя запускать программы разных архитектур на обычном компьютере.
Цель проекта — добавить поддержку архитектуры CdM-16 в QEMU и расширить инструменты LLVM для запуска и отладки программ CdM-16, включая поддержку LLDB.
В отличие от моделирования схемы процессора в Logisim, QEMU будет воспроизводить поведение инструкций и преобразовывать их через TCG (Tiny Code Generator) в машинный код процессора компьютера. Проект дополнит существующие инструменты CdM-16 и станет практическим примером интеграции новой архитектуры в QEMU.
Инструменты разработки
Основной язык реализации — C. Для моделирования процессора и памяти используется инфраструктура QEMU.
Источниками информации об архитектуре служат спецификация CdM-16, cdm-devkit и документация QEMU. Для контроля версий используется Git.
Задачи
- Интегрировать CdM-16 в QEMU как отдельную целевую архитектуру.
- Реализовать процессор CdM-16: его регистры, флаги, декодирование и выполнение набора инструкций через TCG.
- Обеспечить запуск программ: реализовать модель памяти, загрузку машинного кода и выполнение программ CdM-16.
- Исправить генерацию DWARF: добавить корректное описание стековых кадров, необходимое для построения стек-трейсов.
- Добавить поддержку CdM-16 в LLDB: зарегистрировать архитектуру и реализовать необходимую логику для работы отладчика с программами CdM-16.
- Реализовать дизассемблер CdM-16: обеспечить преобразование машинного кода CdM-16 обратно в ассемблерные инструкции.
- Подготовить документацию: описать порядок сборки эмулятора, подготовки и запуска программ.