Skip to content

Benderx2/FVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Please note: R3X is replacing FVM

This project had it coming, firstly, the CPU core was horribly written, and I apologise
for that, secondly it had loads of bugs, and thirdly it was getting unmaintainable. I've made an attempt to revive the project by almost rewriting the entire thing. I won't say it's good, but it's definitely better. The current project support things FVM couldn't, dynamic linking, exception handling, streams, multithreading and a whole lot of new features
It's more portable than FVM too, and has been tested on x86, x86_64, PPC, and ARM64
architectures. Please find the new repository here: https://github.com/Benderx2/R3X
This project is for archival purposes only, don't bother to use the code at all!

FVM

alt tag
An FVM application calls a shared library which displays a bitmap.

The Flouronix Virtual Machine Architecture (or FVM)

INTRODUCTION

The Flouronix Virtual Machine was written to provide a secure and architecture-independant userspace to the Flouronix operating system.
The virtual machine features a 32-bit address space, a stack, 6 general purpose registers,
various arithmetic instructions and is turing complete. For now the machine is incapable for doing most of the things
today's virtual architectures (.NET, Java...) can achieve.
There are future plans to develop a programming language for FVM, but sthat is not the current focus.
The architecure is a RISC-like architecture, and most of the operations are
only performed on CPU registers. There are a special set of instructions that can modify or act on the memory.

INSTRUCTION SET

Please see fvm.md.

COMPILATION AND TESTING

Please use the GNU C Compiler, the code has not been tested with any other
compiler like clang, Visual C, ... So I don't know if it's possible to use them. I'd be happy if anyone could do this for me.
Along with the GNU toolchain for your system, you'll also need the Simple-Direct-Media Layer (SDL for short), https://www.libsdl.org/. The build has been tested with libSDL 1.2, It's recommended to compile it with
that version. It should work with the newer versions though untested!
For those who're using bash (or similar), there is a readymade "build.sh" script.
It does everything that's required and even builds a test multitasking ROM! Non-bash users could modify the script given.
There is a readymade binary called "fvm.out" for Linux, but please don't use it.
It is advisable to build the VM with toolchain that is configured for your system.
Notes: The build system has not been tested with Windows or Mac, however it doesn't use anything
that's Linux specific so it should not require much effort to get it up and running. TESTING:
To test FVM, first you must compile your ROM using FASM.

fasm romfile.asm


Next, you should compile tools/diskgen/diskgen.c and use it to create a ROM Image like this

./diskgen rom1.bin rom1toinitrd.bin rom2.bin rom2toinitrd.bin .......


After this you must specifiy the inital ROM when you're about to run the VM.
./fvm.out memory romdisk.img initrom.bin

LICENSE

Please see LICENSE.

VERSION

Current Version is: 0.2.6.7 BETA

TODO

....

About

Flouronix Virtual Machine. A 32-bit Machine written in C

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published