2005-Nov-3: There is a substantial, fundamental bug in VP-v1.2.3. Specifically, any memory access fault that causes the MMU to place values into registers %s0 and %s1 will clobber the process's values held in those registers before the kernel can preserved them. So, there is an updated virtual machine that has 36 registers, with registers %v0, %v1, %v2, and %v3 now available for the CPU/MMU to store special values before vectoring into the kernel.
Please grab VP-v1.2.4.tar.bz2 from ~sfkaplan/public/cs39 on sirius. Update your kernels to use these new registers.
2005-Oct-15: At long last, Project 2 has been posted. It's big, so get started!
2005-Oct-6: Yet another bug found by Rob, Denitsa, and Alexandra! (Makes me wonder how this code worked in previous years...) The old virtual CPU, upon encountering an invalid opcode, would trap into the kernel, but then proceed to attempt to complete executing that invalid opcode when the kernel returned. That's clearly an error.
I have fixed this bug (along with the previously mentioned one mentioned below), and placed it in a new tarball that you can copy from:
~sfkaplan/public/cs39/VP-v1.1.2.tar.bz2
BE SURE NOT TO EXTRACT THIS TARBALL ON TOP OF YOUR EXISTING WORK. Extract it into a separate directory and then copy virtualMachine.hh and virtualMachine.cc into your directory, noting that doing so will indeed clobber the minor changes you have made to virtualMachine.cc in order to support multiple executables at the command line. You should be able to restore those changes easily. (You may want to keep a copy of your old virtualMachine.cc, just in case.
2005-Oct-2: Tom found a bug in the virtual machine that should be fixed! Note that this bug is not likely to affect you, but to be safe, you should, in virtualMachine.cc, in the checkAddressValidity function, this...
if ((offset == VMACHINE_NULL) || ((getBase() + offset >= getLimit()) || ((unsigned int)offset % sizeof(vMachineWord_t) != 0)) {
...should be changed to this...
if ((offset == VMACHINE_NULL) || (offset >= getLimit() - getBase()) || ((unsigned int)offset % sizeof(vMachineWord_t) != 0)) {
Pop quiz: Do you see why the change is necessary? What bug did Tom just fix?
2005-Sep-27: The groups have been set as listed below:
A: Alexandra Booth, Denitsa Tilkidjieva, Robert Anderson B: Michelle Sanders, Patrick Ziepolt C: David Schaich, Owen Hofmann D: Laura Strickman, Lyndsey Scott, Laura Trigeiro E: Ben Kaufman, Tom Jablin F: Alex Brewer, Michael Bordas
The group directories can be found, on sirius, with one subdirectory per group at:
/mnt/sirius-c/cs39
2005-Sep-18: Currently, you can login to sirius via VNC, but you will then get a blue screen with no usable interface. You can, however, login to vega or algol just as you would to sirius, and have access to the same files and the same tools. Use these other two machines as backups if sirius is misbehaving.
2005-Sep-18: Because of the numerous problems people have had in getting using sirius, XEmacs, g++, etc., the deadline for Project 0 has been extended by two days. You must now submit it by Tuesday, 2005-Sep-20, 11:59 pm.
2005-Sep-8: Project 0 has been posted. Although we need to discuss it more in class, you should begin thinking about it.
2005-Aug-22: Check here regularly to see class annoucements including modified deadlines, corrections, etc. Also, be sure to read the course information page.