The ARC Simulator

Introduction

The authors of the textbook have provided a Java program to simulate the ARC processor. You can enter assembly language statements, and the simulator will translate them into machine language, and you can then simulate the execute of the machine language program, observing the changes in memory and registers as each instruction is executed.

To use the simulator, you must have the Java runtime environment installed on your computer. You need to be able to run the Java compiler by typing the java command at a DOS prompt before trying to use the simulator.

Downloading and Running the Simulator

Once you have Java working, you can click on this link to download a zip file that you should save to your hard disk. Unzip the file into a convenient directory, and you will get two subdirectories, one called ARCTools, and the other called Examples. The ARCTools dirctory contains the simulator in a jar file, and several README text files that you will have to study to learn how to use the simulator. The Examples directory contains sample assembly language programs you may try with the simulator.

NOTE: The version of the jar file has changed from 1.2.5 to 1.2.8 as of February 2004. Be sure you use the newer version. The old version is also included in the zip file in case you want to work with it. There are improvements in the newer version, but it does not handle all the op codes that the old one did.

If you have Java 1.2 or later installed on your computer, you can just double-click on the jar file to run the simulator. Or, from a command line you can enter:

java -jar ARCToolsv1.2.8.jar

If you are running an earlier version of java, you will have to use the command given in the README-ARCSimulator.txt file to run it:

java -cp ARCToolsv1.2.8.jar ARCTools.ARCSim

Also, I have edited the Example files so they are formatted a bit more nicely than the originals (I changed tabs to spaces so the code would line up properly), and I changed some of the code so it ends with a "halt" instruction instead of a "jmpl" that would work only if the code had been invoked as a subroutine. But the examples remain undocumented.