Skip to content

Proof of concept where a program loads a custom section, and then translates that code to from a custom assembly language to x86_64 assembly.

Notifications You must be signed in to change notification settings

pacampbell/selfvm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description

This repository a proof of concept project where a program written in C loads a custom section appended to itself and then runs it. This custom section contains instructions of a made up instruction set called VMLANG. The instructions are decoded and then simulated or translated to x86_64 code depending on options given to the runtime.

You can find a specification of VMLANG in the specifications directory. An assembler for VMLANG can be found in the assembler directory. The VMLANG loader and runtime/translator can be found in the runtime directory.

Status

Currently work is being done in the specifications directory. VMLANG is in the process of being described. The assembler will be written after VMALNG has been completely specified. Proof of concept code which can memory map a custom section of itself is currently located in the runtime directory. After the assembler has been completed, a simulation environment will be developed to fetch, decode, and execute the VMLANG instruction set. After a reference simulator has been constructed, a binary translator will be developed which can translate VMLANG to x86_64 assembly language basic blocks. The blocks will then be executed and hopefully have the same behavior as the simulator but at a higher performance.

About

Proof of concept where a program loads a custom section, and then translates that code to from a custom assembly language to x86_64 assembly.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published