Coder Social home page Coder Social logo

arcvm's Introduction

arcvm

This is arcvm, an (unofficial) virtual machine for the fictional ARC architecture, as used in the book "Computer Architecture and Organization: An Integrated Approach" by Miles Murdocca and Vincent Heuring. It tries to be completely compatible with the instruction set described in the book, but also integrates the improvements in recent versions of the ARCTools, as well as adding some features on its own. The practical upshot of this is that all programs written for, and assembled with, the ARCTools should run unmodified on arcvm.

Compared with the official simulator, arcvm has the following features:

  • Simple video output. A scaled 320x240, 8-bit color, fixed-palette virtual display is available.
  • Performance. The virtual machine itself is written in C and plenty fast.
  • Compatibility. Arcvm implements the same instruction set as the ARCTools, and runs the .bin files the ARCTools assembler generates.

Also bundled is a set of standard libraries that provide handy subroutines for common operations, as well as a tool (arcpp) for 'linking' with those libraries.

Examples

The VM ships with a host of examples in the asm/ directory.

  • colnames.bin: Fills the screen with pixels of changing color. Slow.
  • edit.bin: A fake editor. Typing, backspace and enter 'work'.
  • hello.bin: Prints 'Hello, world!' to the console.
  • logo.bin: Draws the arcvm logo to the screen.
  • pixel.bin: Draws a palette to the screen.
  • wargames.bin: Shall we play a game?

Libraries

A number of utility libraries are available, providing higher-level access to the video and console interfaces, among other things. Read the README file in the asm directory for library documentation. The examples above also use the libraries.

  • libchk.arc: Assertions and checks.
  • libchr.arc: Character constants.
  • libcol.arc: Color names.
  • libcon.arc: Console output and keyboard input.
  • libdev.arc: I/O offsets for directly interfacing with peripherals.
  • libfnt.arc: Bitmap font character generator.
  • libgfx.arc: Graphics macro's.
  • liblib.arc: Utilities for building libraries.
  • libmem.arc: Higher-level memory subroutines.

License

Arcvm is distributed under the terms of the ISC License. Read the LICENSE.mkd file for details.

NOTE: If you are looking for the official ARCTools assembler and simulator, this is not it. Go to http://iiusatech.com/murdocca/CAO/.

arcvm's People

Contributors

wandernauta avatar

Stargazers

 avatar

Watchers

 avatar  avatar  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.