Skip to content

limdizz/java-cpu-emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-cpu-emulator

Первая лабораторная работа по дисциплине Java была вводной, и её тема никак не была связана со темой следующих лабораторных работ, поэтому отсчёт идёт с лабораторной работы №2.

Лабораторная работа №2

Необходимо написать класс "Процессор".

Количество регистров - 4. Размер памяти - 1024 элемента int.

Доступные инструкции:

  • ld <регистр> <адрес памяти> - загрузка данных из памяти в регистр;

  • st <регистр> <адрес памяти> - загрузка данных из регистра в память;

  • mv <регистр r1> <регистр r2> - копирование r1 = r2;

  • init <адрес> <значение> - инициализация памяти по адресу значением;

  • print – печать всех значений регистров;

  • add – с точки зрения регистров d = a + b;

  • sub – с точки зрения регистров d = a - b;

  • mult – с точки зрения регистров d = a * b.

Пример программы (вычисление (20+25) / 5):

init 10 20
init 11 25
init 12 5
ld a 10
ld b 11
ld c 12
add
print // вывод 20 25 5 45
mv a d
mv b c
div
print // вывод 45 5 5 9

Особенности реализации:

  1. Процессор - отдельный класс.

  2. Метод выполнения инструкций описан в классе процессора или классах-обработчиках.

  3. Возможность расширения списка инструкций.

Возможный интерфейс процессора:

interface ICpu {
  void exec(Command c);
}

Лабораторная работа №3

Программу представить отдельным классом.

Программа должна давать возможность добавить инструкцию.

Программа должна быть итерируема (показать реализацию интерфейса Iterator).

Программа должна отвечать на следующие запросы (использовать класс Collections или StreamAPI):

  1. Какая инструкция в программе встречается наиболее часто.

  2. Какой диапазон адресов памяти используется в программе.

  3. Получить список инструкций, используемых в программе, упорядоченный по частоте появления.

Лабораторная работа №4

Разработать визуальное приложение – эмулятор процессора.

Программа должна позволять:

  1. Добавлять инструкции в программу.

  2. Удалять инструкцию из программы.

  3. Перемещать по коду инструкции вверх и вниз.

  4. Отображать состояние регистров.

  5. Отображать состояние памяти.

  6. Выводить статистику по программе (см. л.р. 3).

  7. Исполнять программу по шагам.

Текущая инструкция отображается красным.

Должна быть возможность перезапустить программу.

Лабораторная работа №5

Программа (набор инструкций) должна сохраняться в базе данных с помощью Hibernate/JDBC (в данной работе я использовал JDBC).

За счёт этого она будет поддерживаться в актуальном состоянии при редактировании внутри эмулятора и вновь становиться доступной при очередном запуске эмулятора.

About

Java discipline laboratory works at my university (2nd year)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages