Introduction to MARIE - MARIE-js/MARIE.js GitHub Wiki

MARIE ('Machine Architecture that is Really Intuitive and Easy') is a machine architecture and assembly language served only for educational purposes from The Essentials of Computer Organization and Architecture (Linda Null, Julia Lobur). In addition, the publisher provides a set of simulator programs for the machine, written in Java.

MARIE.js is a JavaScript version implementation of MARIE. It aims to be as faithful to the original Java programs as it can, while improving on features to make concepts more intuitive and easier to understand.

The basic idea, is that the MARIE assembly language is a simple implementation of the von Neumann architecture as shown below.

von Neumann Diagram

An assembly language is the lowest level of abstraction you can get away from machine language, which is binary code. Each instruction corresponds to its binary representation.

There are several assembly languages, one for each machine architecture. More familiar architectures like x86, ARM and MIPS are fairly complicated (x86 even more so than ARM and MIPS), which is why MARIE is designed to be easy to understand (hence its name).

So in MARIE (as well as in other architectures) we have a collection of registers. These registers are shown below:

  • AC or Accumulator: intermediate data is stored within the AC
  • PC or Program Counter: as the name suggests it stores the current position of the instruction, with each instruction having its own address
  • MAR or Memory Access Register: stores or fetches the 'data' at the given address
  • MBR or Memory Buffer Register: stores the data when being transferred to or from memory
  • IR or Instruction Register: holds the current instruction

Here is some useful documentation to look at: