Skip to content

Nechda/CPU-emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cpu emulator

Данный проект включает в себя три основные части: компилятор языка ассемблера с упрощенным набором команд, дизасемблер и эмулятор процессора.

Getting started

Если вам очень хочется поиграться с кодом, то следующие шаги позволят вам установить проект к себе.

Instalation

Windows: Visual Studio

  1. Вам необходимо скачать код проекта в отдельную директорию.
  2. В Visual Studio открыть меню Файл > Создать > Проект из существующего кода.
  3. В открывшемся окне типом проекта выбираем Visual C++, нажимаем далее.
  4. Указываем расположение файла и <имя проекта>, нажимаем далее.
  5. В качестве типа проекта выбираем консаольное приложение, нажимаем готово.
  6. Переходим в свойства исполняемого проекта: Отладка > <Имя проекта>: свойства.
  7. Меняем опцию Общее>Версия пакета SDK для Windows на ту, которая установлена у вас.

Важно отметить, что для запуска проекта, также требуется библиотека freeglut. Картинки с последовательностью шагов могут улучшить понимание происходящего.

Linux

Еще не реализовано.

Usage

После сборки проекта у вас появится исполняемый файл, с которым можно работать через аргументы командной строки. Ниже перечислены флаги, задающие режим работы.

  • -h
    Выводит краткую справку по флагам, которые поддерживает программа.

  • Вызывает компилятор, необходимо задать файл с исходным кодом через флаг -i.
  • -d
    Вызывает дизасемблер, необходимо задать бинарный файл с програмой через флаг -i.
  • -r
    Вызывает виртуальный процессор для исполнения вашей программы, необходимо задать бинарный файл с програмой через флаг -i.
  • -e
    Последовательно вызвает компилятор, затем процессор. Скомпилированная программа запускается на выполнение. Необходимо задать файл с исходным кодом через флаг -i.
  • -i <имя файла>
    Флаг указывает программе, какой файл будет считаться входным. Из него считываются данные для дальнейшей работы.
  • -o <имя файла>
    Флаг указывает программе файл, в который будет записываться результат выполнения.
  • -l <имя файла>
    Флаг позволяет указать имя файла лога, по умолчанию файл будет называться log.log
  • -n
    Если данный флаг включен, то файл лога не создается, а вся отладочная информация выводиться на экран.
  • --memorySize=<число байт>
    Данный флаг указывает размер виртуальной памяти процессора.
  • -s
    Данный флаг устанавливает режим "STEP BY STEP" выполнения программы процессора, после каждой команды выводится полная информация о процессоре на экран.
  • -t
    Флаг запускает тестирующие программы, которые расположены в папке Tests.

Примеры использования некоторых флагов:

>ProgramManager.exe -с -i ASM_CODE.txt -o prog.bin
$./ProgramManager.out -с -i ASM_CODE.txt -o prog.bin

Выполнение команды произведет компиляцию программы из файла ASM_CODE.txt, результат будет записан в prog.bin. Все ошибки будут записаны в log.log

>ProgramManager.exe -d -i prog.bin -o disasm.txt
$./ProgramManager.out -d -i prog.bin -o disasm.txt

Выполнение команды произведет дизассемблирование программы из prog.bin, результат будет записан в disasm.txt. Все ошибки будут записаны в log.log

>ProgramManager.exe -r -i prog.bin --memorySize=1024 -s
$./ProgramManager.out -r -i prog.bin --memorySize=1024 -s

Выполнение команды запустит эмуляцию программы из prog.bin на виртуальном процессоре, в режиме STEP BY STEP, выделив под виртуальную память 1024 байта. Результат выполения эмуляции будет выведен в log.log

>ProgramManager.exe -e -i ASM_CODE.txt --memorySize=1024 -s -o temp.bin
$./ProgramManager.out -e -i ASM_CODE.txt --memorySize=1024 -s -o temp.bin

Выполнение команды запустит компиляцию программы, описанной в ASM_CODE.txt, результат компиляции будет записан в temp.bin. Затем будет запущена эмуляцию программы из temp.bin на виртуальном процессоре, в режиме STEP BY STEP, выделив под виртуальную память 1024 байта. Результат выполения эмуляции будет выведен в log.log

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published