Web Resources for CS2600, Sections 1 and 2 (Computer Organization)

Instructor: Gene Cooperman
Fall, 2013

The final exam is Thursday, Dec. 12 at 1:00 p.m. in:
335 Shillman Hall (Tuesday/Friday section) or 305 Shillman Hall (Wednesday/Friday section).

The MIPS simulator is available in the "MIPS-simulator" subdirectory of the course directory.

Course basics: Here are some immediate resources in the course for doing homework, following the readings, etc.

  1. The course directory contains all course homework, handouts, and the syllabus. The syllabus contains the required readings in the textbook. The course directory is also available from our Linux machines as /course/cs2600gc/.
  2. The course directory includes a help directory.
  3. Please also note the directory for UNIX (Linux) editors. You will need to login to a Linux machine to use these. They are in /course/cs2600gc/unix-editors.
  4. Appendix B from Appendix B of 4th edition of text, or Appendix A of 3rd edition of text, is also online (requires CCIS Linux password). It is the manual for MIPS Assembly language. Read it, and re-read it.
  5. Portions of the rest of an older edition of the text CD are also available online (requires CCIS password).
  6. Some help files for Linux and its compilers, editors, etc. are also available. As you use Linux, please look into using gdb (GNU debugger), which will help you greatly in debugging. This will help when you test your homeworks on our Linux machines.
  7. There is also a good, free on-line C book by Mike Banahan, Declan Brady and Mark Doran.
  8. If you use Windows, there is a free, open-source IDE (Integrated Development Environment) for C/C++, Dev-C++. Homeworks must be handed in using C, but this is a subset of C++. When your code works, you must still test it under Linux:
    gcc myfile.c; ./a.out
    If it doesn't work on our Linux system, it will be graded as not working.

Some students have asked about a book for a more advanced introduction to Linux and systems programming. This book goes well beyond what is needed for the course. But for those who are interested, there is:
     Advanced UNIX Programming, by Marc J. Rochkind

===============================

MIPS Simulator for Assembly Language homework (MARS):

  1. There is a MIPS Assembly language simulator with free downloads available and online documentation. For your convenience, a copy of the simulator is at: MIPS-simulator.
  2. To begin running the simulator, go inside the folder, and double-click on the Mars.jar icon. Alternatively, if running from the command line, type: java -jar Mars.jar If you download Mars.jar for your computer, there are also suggestions on that page for running Mars.
  3. The syntax of the assembly language is intended to be compatible with Appendix B of our textbook (also available online (requires CCIS password).
  4. The software is distributed as a Java .jar file. It requires Java J2SE 1.5 or later. Depending on your configuration, you may be able to directly open it from the download menu.

    If you have trouble, or if you prefer to run from the command line on your own computer, the Java SDK is is also available for free download from the same download page. The instructions for running it from Windows or DOS should work equally well on Linux. The CCIS machines should already have the necessary Java SDK installed.

  5. GOTCHAS: There are several important things to watch out for.
    1. When you hit the "Assemble" menu item, any error messages about failure to assemble are in the bottom window pane, tab: "Mars Messages". Input/Output is in the bottom window pane, tab: "Run I/O"
    2. If you paste assembly code into the edit window pane, you must save that code to a file before Mars will let you assemble it.
    3. If you have selected a box with your mouse (e.g. "Value" box in the data window pane, or "Register" box), then Mars will not update the value in that box. Mars assumes you prefer to write your own value into that box, and not to allow the assembly program to use that box.
    4. If your program stops at an error, read the "Mars Messages" for the cause of the error, and then hit the "Backstep" menu item to see what caused that error. Continue hitting "Backstep" or "Singlestep" in order to identify the error.
    5. Your main routine must call the "exit" system call to terminate. It may not simply call return ("jr $ra"). Note that page B-44 of Appendix B of the text (fourth edition) has a table of "system services" (system calls). These allow you to do "exit" and also I/O.
  6. One of the nicer features of this software is a limited backstep capability (opposite of single-step) for debugging. In addition, the help menu includes a short summary of the MIPS assembly instructions. In general, I like this IDE for assembly even better than some of the IDEs that I have seen for C/C++/Java. (The one feature that I found a little unintuitive is that if you want to look at the stack (for example) instead of data, you must go to the Data Segment window pane, and use the drop-down menu at the bottom of that pane to choose "current $sp" instead of ".data".)
  7. Please note the three sample assembly programs, along with an accompanying tutorial on the same web page.
  8. I'd appreciate if if you could be on the lookout for any unusual issues, and report them promptly (along with possible workarounds), so the rest of the class can benefit. Thanks very much for your help on this.

===============================

===============================