Giter Club home page Giter Club logo

merry's Introduction

Due to personal circumstances, There probably won't be any updates for about 1 Week.

MERRY

Merry is a 64-bit Virtual Machine that emulates a non-existsent CPU. Merry has it's own custom ISA that is still small but is growing steadily. Merry aspires to be a very easy-to-use and simple tool for problem solving. It has 180 different instructions that can be employed to solve all sorts of problems and that is still only a fraction of what it can do in the future.

Note: If you wish to learn about the instructions that Merry supports or how they are encoded, please look in docs/opcodes.txt where I have tried my best to explain it.

Features:

  1. Custom ISA.
  2. Very fast execution.
  3. Custom input format.
  4. IO capabilities.
  5. Multi-threading(Untested)
  6. Arithmetic instructions(signed and unsigned).
  7. Floating point instructions(Untested).
  8. Assembler(In development).
  9. Programming Language(In development).
  10. Dynamic Library Loading(tested for linux only).
  11. File IO(Not fully tested) and comming soon....

Updates:

A more than basic assembler has been added. The assembler currently supports most of the instructions needed to write cool programs. See example/run/ for example programs that can be assembled and run. Please do not run the programs in example/don't run folder which should be inituitive.

Some Important Notes:

Merry is not fully tested right now and so it may not work as expected. Hence any help in finding and solving the issues is appreciated. The building process will be explained soon. The VM hasn't been tested in Windows, Mac or any other operating systems. Also the use of gcc as the compiler would be recommended.

Building the VM and the Assembler:

Due to my lack of knowledge in build systems, I have had to use a script written in Python for building. For building the project, here is the command to run:

python build.py <Destination Folder> all # for building everything
python build.py <Destination Folder> vm # for building the vm only
python build.py <Destination Folder> asm # for building the assembler

Note that the above command must be ran in the same directory as the script. If the destination directory doesn't exist already, create one first.

Running Programs:

In order to make merry run any program, first go into the directory where the compiled executable resides and type the following command:

./merry -f <input file path>

This will make merry read the input file and start executing it. But before run a program, you would need one and for that you can use the assembler to write the program and then assemble it with the command:

./masm <path_to_input_file>

Things to know:

Merry is still in development and hence it is appreciated for feedback on test failures. Many features are yet to be implemented.

Run Tests:

Goto example/run to look at example programs involving the assembly language. The syntax is inspired by x86_64 Nasm assembly which should be well knowm.

merry's People

Contributors

erickim27 avatar luccie-cmd avatar megrajchauhan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.