ArchLab2 Release Notes


  • Fixed a bug in pipe/ that allowed programs that are too long to get full credit. Thanks to Jenna MacCarly, Carnegie Mellon


  • Updated autograders to compute and summarize all autograded scores on the gradesheets.
  • Fixed some typos in the writeup and the slides.
  • In the writeup, updated references to problem numbers for iaddl and leave to include the corresponding problem numbers for the international version.


This is a major update of the Arch Lab that reflects the changes in Chapter 4 of CS:APP2e.
  • Students can now use the conditional move instructions to avoid the performance problems of conditional jumps.
  • The benchmark test has a random selection of positive vs. negative numbers. So, conditional moves are really the way to go.
  • The correctness check is more robust, looking for things like overshooting the array bounds.
  • Added a 1000-byte limit on the size of the object code for the ncopy function.
  • Added Perl scripts in src/ptest that provide comprehensive regression testing of the different Y86 simulators:
    • Tests each individual instruction type.
    • Tests all of the jump types under different conditions.
    • Tests different pipeline control combinations.
    • Tests many different hazard possibilities.
  • Incorporated the regresssion tests in src/ptest into the autograding of the student solutions for parts B and C.


  • Fixed problem that caused some newer Linux distributions to get tk.h from /usr/local/include instead of /usr/include. Thanks to Prof. Dr. Gerd Doeben-Henisch, Fachhochschule Frankfurt.


  • Fixed minor bug that caused some compilers to complain. Changed type of return value from getopt() from char to int. Thanks to Morgan Harvey, Portland State University.


  • Initial release.