Coder Social home page Coder Social logo

metronome32's Introduction

Metronome32 Version 1.0.0-alpha

(using SemVer 2.0.0)

Build Status codecov Language grade: C/C++

Credit for the Pendulum 32-bit Instruction Set Architecture goes to Carlin James Vieri.

Metronome32 is made by Grayson Burton and is hosted at its Github repo.

What is Pendulum?

Pendulum is a 32-bit RISC Instruction Set Architecture that is completely, fully, 100% reversible. Any instruction executed can be reversed. This has advantages such as potentially "rewinding" a computer if a crash happens.

What is Metronome?

Metronome is a C++14 virtual machine made to execute Pendulum 32-bit bytecode. It also has a library for creating programs or instructions straight from C++, though this capability is intentionally barebones.

Beware!

Make sure to read through the Pendulum 32-bit Instruction Set Architecture specifications. It contains a lot of valuable information, not to mention that it's the sole source used in Metronome32's production.

One extremely easy mistake to make is to forget (or never know) that all branch and jump instructions must point to a CF (come from) instruction.

Metronome tries its best to stick to pure mandatory-only ISO C++14. Unfortunately, the use of std::uint32_t was practically inevitable. On top of that, Metronome assumes that the conversion of negative signed integers to unsigned numbers uses two's complement. These are thought to be relatively reasonable.

It uses SD-6 feature tests to optionally enable some attributes such as [[fallthrough]]. It does not test for [[maybe_unused]] support, instead presuming the compiler doesn't actually treat it as an error if it cannot be used.

Routine Testing

Currently, Metronome32's master branch is tested on a per pull request basis. It uses Travis CI to test on:

  • Ubuntu Xenial Xerus 16.04 LTS using GCC 5.4.0
  • Ubuntu Xenial Xerus 16.04 LTS using Clang/LLVM 7.0
  • macOS 10.13 (Xcode 10.1) using Clang/LLVM 10.0

metronome32's People

Contributors

ocornoc avatar

Stargazers

 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.