Skip to content
/ JAM Public

Just-A-Machine. Stack-based virtual machine on C99

Notifications You must be signed in to change notification settings

vldpro/JAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JAM (Just a machine) stack virtual machine

Структура виртуальной машины:

  • Контекстный стек ( реализован как связный список ) - хранит структуры типа vm_context_t, в которых содержится информация, необходимая для описания контекста исполнения функции.

  • Массив функций - массив загруженных из бинарного файла функций.

  • Пул констант - массив константных строк.

Контекст исполнения (vm_context_t):

  • Стек вычислений ( обертка над массивом ) - предназначен для передачи операндов командам и для приема результатов вычислений команд или функций. Выделяется свой для каждой функции.

  • Стек данных ( обертка над массивом ) - предназначен для хранения результатов вычислений. Выделяяется свой для каждой функции.

  • Счетчик команд

  • Указатель на исполняемую функцию

  • Указатель на предыдущий контекст исполнения

Функция (function_t):

  • name ID - смещение в констатном пуле. Указывает на то, где хранится имя функции.

  • Кол-во аргументов

  • Кол-во загруженных команд

  • Команды - массив байтов. Содержит коды команд.

Содержание проекта:

  • Виртуальная машина ( С99 )
  • Компилятор Ассемблера ( Java 8 )

About

Just-A-Machine. Stack-based virtual machine on C99

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published