Данный проект представляет собой эмулятор процессора с безадресной (стековой) архитектурой и Гарвардской организацией памяти (разделение памяти команд и данных). Эмулятор разработан для выполнения программ на ассемблере и визуализации работы процессора в реальном времени.
- Стековая архитектура: Все операции выполняются над данными, расположенными на стеке
- Гарвардская архитектура: Раздельная память для команд и данных
- Визуализация состояния: Регистры, флаги, стек и память отображаются в реальном времени
- Встроенный ассемблер: Преобразование мнемокода в машинные инструкции
- Интерактивное управление: Пошаговое выполнение и отладка программ
- Регистр команд (IR): Текущая выполняемая команда (машинный код + ассемблер)
- Счетчик команд (PC): Адрес следующей команды в памяти
- Стек данных: LIFO-структура для операций с данными
- Указатель стека (SP): Адрес вершины стека в памяти
- Регистр флагов: Z (ноль), S (знак), C (перенос), V (переполнение)
- Память команд: 16-битные инструкции (отдельная область)
- Память данных: Ячейки для массивов и рабочих данных
- Формат команд: 16-битные инструкции фиксированной длины
- Типы операций:
- Пересылка данных (PUSH, POP)
- Арифметические операции (ADD, SUB, MUL)
- Логические операции (AND, OR, NOT)
- Операции сравнения (CMP)
- Управление выполнением (JMP, JZ, JNZ, CALL, RET, HALT)
- Сумма элементов массива (массив из 6-15 элементов)
- Свертка двух массивов (по 10 элементов каждый)
Память данных:
Адрес 0x1000: [Размер массива A]
Адрес 0x1001: [Элемент A1]
Адрес 0x1002: [Элемент A2]
...
Адрес 0x1010: [Размер массива B]
Адрес 0x1011: [Элемент B1]
Адрес 0x1012: [Элемент B2]
- Регистр команд (IR) с машинным кодом и ассемблерным представлением
- Счетчик команд (PC)
- Стек данных с визуализацией LIFO
- Указатель стека (SP)
- Регистр флагов (Z, S, C, V)
- Вкладка "Память команд": Таблица с адресами, машинными кодами и ассемблерными мнемониками
- Вкладка "Память данных": Таблица с адресами, значениями и комментариями для массивов
- Текстовый редактор с подсветкой синтаксиса ассемблера
- Кнопки управления: Ассемблировать, Сброс, Стоп, Шаг, Пуск
- Предустановленные программы для задач
- Вкладка для ошибок ассемблирования
- Вкладка для системных сообщений
; Инициализация
PUSH [0x1000] ; Загружаем размер массива
PUSH 0 ; Инициализируем аккумулятор
LOOP:
DUP ; Дублируем счетчик
JZ EXIT ; Если счетчик = 0, выходим
DEC ; Уменьшаем счетчик
SWAP ; Меняем счетчик и аккумулятор местами
; Загружаем следующий элемент массива
PUSH [0x1001] ; Базовый адрес массива
ADD ; Добавляем смещение
LOAD ; Загружаем значение элемента
ADD ; Добавляем к аккумулятору
SWAP ; Возвращаем счетчик на вершину
JMP LOOP ; Повторяем цикл
EXIT:
POP ; Убираем счетчик со стека
PUSH [0x1100] ; Адрес для результата
STORE ; Сохраняем результат
HALT ; Завершаем выполнение
Современный веб-интерфейс для эмуляции процессора с безадресной (стековой) архитектурой и раздельной памятью команд и данных.
- React 19.1.1 - Библиотека для создания пользовательских интерфейсов
- TypeScript 5.8.3 - Типизированный JavaScript для масштабируемых приложений
- Vite 5.0.0 - Быстрый инструмент сборки для современного фронтенда
- ESLint - Линтер для обеспечения качества кода
- PrimeReact 10.9.7 - Богатая библиотека компонентов для React
- PrimeIcons 7.0.0 - Набор иконок для интерфейса
- Zustand 5.0.8 - Легковесное управление состоянием
- CSS3 - Современные стили с градиентами и анимациями
- Glassmorphism - Полупрозрачные эффекты
- Responsive Design - Адаптивный дизайн для всех устройств
- Glassmorphism дизайн - Полупрозрачные карточки с размытием
- Градиентные фоны - Профессиональная синяя цветовая схема
- Плавные анимации - Fade-in эффекты и hover анимации
- Адаптивность - Корректное отображение на всех устройствах
- Редактор ассемблера - С подсветкой синтаксиса и автодополнением
- Готовые примеры - Программы для суммы массива и свертки
- Справочник команд - Полная документация по ассемблеру
- Визуализация состояния - Регистры, флаги, стек и память
- Пошаговое выполнение - Отладка программ
src/
├── components/ # React компоненты
│ ├── TaskPanel/ # Панель заданий
│ ├── CommandEditor/ # Редактор ассемблера
│ ├── ProcessorView/ # Состояние процессора
│ ├── MemoryView/ # Память и история
│ ├── ControlPanel/ # Управление выполнением
│ └── TechStack/ # Стек технологий
├── store/ # Zustand store
├── types/ # TypeScript типы
├── styles/ # Глобальные стили
└── App.tsx # Главный компонент
# Установка зависимостей
npm install
# Запуск dev сервера
npm run dev
# Сборка для продакшена
npm run build
# Предварительный просмотр сборки
npm run preview
PUSH <value>
- поместить значение на стекPOP
- извлечь значение со стекаDUP
- дублировать верхний элемент стекаSWAP
- поменять местами два верхних элемента
ADD
- сложениеSUB
- вычитаниеMUL
- умножениеDIV
- делениеINC
- инкрементDEC
- декремент
JMP <label>
- безусловный переходJZ <label>
- переход если нольJNZ <label>
- переход если не нольHALT
- остановка выполнения
- Сумма элементов массива - Вычисление суммы всех элементов массива из 6-15 элементов
- Свертка двух массивов - Вычисление свертки двух массивов по 10 элементов каждый
Проект использует современные инструменты разработки:
- Hot Module Replacement - Мгновенное обновление при изменениях
- TypeScript - Проверка типов во время разработки
- ESLint - Автоматическая проверка кода
- Vite - Быстрая сборка и разработка
MIT License - свободное использование и модификация.