One Address Machine (OAM) is a simple virtual CPU architecture: intended to teach the fundamentals of an instruction set, memory, addressing, high level programming, compilation assembly, etc.. The web based compiler and assembler/emulator is called OAMulator and allows programs written in a special programming language (OAMPL) to be compiled into OAM Assembly and to interpret/execute OAM Assembly code (produced by the compiler or written directly).

The OAMulator is a Web-based resource to support the teaching of instruction set architecture, assembly languages, memory, addressing, high-level programming, and compilation.

The tool is based on a simple, virtual CPU architecture, called the One Address Machine.

A compiler allows us to take programs written in a special programming language, called OAMPL, and transform them into OAM assembly.

An OAM assembler/emulator interprets and executes OAM assembly code produced by the compiler or written directly by students.

The OAMulator is targeted at non-CS students who take introductory courses in information technology or information systems. Such students are normally exposed to concepts of computer hardware and software, but it is difficult for them to make the connection between the two.

The OAM emulator resource supports the teaching of the following concepts:

  1. Von Neumann architecture
  2. registers
  3. ALU and controller
  4. CPU stages of execution
  5. instruction set architecture
  6. assembly languages
  7. memory and addressing

The OAMPL compiler resource supports the teaching of the following concepts:

  1. high-level languages
  2. compilers
  3. I/O, assignment, and control statements
  4. variable reference resolution
  5. expressions and parsing
  6. optimization

src: http://informatics.indiana.edu/fil/Papers/oamulator.pdf