Homepage: http://www.cs.utexas.edu/users/hunt/class/2017-spring/cs350c/cs350c.html
Homework will generally be assigned every week on Tuesday, and it is due nine days later on Thursday at the beginning of class. Of course, you may bring finished homework to class; otherwise, you must get it to the class TA before the due date and time. Remember, late homework is not accepted, but the two lowest homework grades will be dropped. Assignments will appear here as the semester progresses. Please show your work -- partial credit cannot be awarded if just an incorrect answer is given. Homework will generally be submitted on Canvas, but if a homework is turned in to the TA, it must have a cover sheet attached to the front. Only write the information requested on this cover sheet; do not include your Taxpayer ID number.
You may discuss the homework questions with your peers, but the end product that you turn in should be your own work. We want you to learn with and from your peers, but each of you is responsible for your own work.
Below is a link to our y86 assembler (specification). There are some
files that this code references, but those details are not needed to
get the "feel" of a simple assembler. Note, I may update this file
from time-to-time. Why? As student ask me questions, I may include
additional comments to make this assembler outline more useful.
The heart of this course is the laboratory assignments. Working
through the labs is where the real learning is most likely to occur.
There will be four laboratories. Each laboratory is meant to expose
some new concept and then solidify a student's understanding.
Laboratory 0 involves a more involved look at the memory mountain code
that you may have been introduced to in CS429. A 3-D representation
of the performance of some x86 memory system can be seen on the front
of the "Computer Systems, A Programmer's Perspective" book by Randal
E. Bryant and David O'Hallaron, Prentice Hall Publisher. We will
explore memory-system responsiveness by running code on x86-based
computers, either UTCS Linux systems or on your personal laptops.
clockO1.s
Here are some test
datasets: test10.txt
test100.txt
test1000.txt
Return to CS350c course homepage.
Y86-64 Assembler
y86-64-asm.lisp
Below is a link containing two example y86 assembler programs.
Y86-64 Assembler Examples
y86-64-code.lisp
Below is a link containing a Lisp-based version of the y86 simulator.
Y86-64 Simulator
y86-64-asm.lisp
Below is a link to the test programs (edited and annotated by us)
submitted by you, the students.
Y86-64 Test Programs
Test programs
Laboratory Assignments
Laboratory 0:
The files for the laboratory can be found in a
"tar" archive.
The instructions, which are also included in the "tar" archive, may be
downloaded directly
(PDF). Given:
Thursday, January 19, 2017, Due: February 2, 2017, by noon.
If you'd like some extra credit for the course (amount TBD), please submit a 1-2 paragraph explanation of why the assembly code produced by the files ending in "O2.s" prints only 0s for the memory mountain table, while the files ending in "O1.s" produce meaningful output. Both sets of files were compiled on Ben's Mac running Mac OS X el Capitan, with LLVM version 7.3.0.
fcycO1.s
mountainO1.s
clockO2.s
fcycO2.s
mountainO2.s
Laboratory 1:
The files for the laboratory can be found in a
"tar" archive. The
instructions, which are also included in the "tar" archive, may be
downloaded directly (PDF).
Given: Tuesday, February 7, 2017, Due: Tuesday, February 28, 2017,
by 10:00 am.
Laboratory 2:
The file for the Laboratory 2 can be found in
a PDF file.
Given: Thursday, March 7, 2017, Due: Tuesday, April 4, 2017,
by 10:00 am.
Laboratory 3:
The files for the laboratory can be found in a
"tar" archive.
The instructions, which are also included in the "tar" archive, may be
downloaded directly
(PDF). Given:
Thursday, April 18, 2017, Due: Thursday, May 4, 2017, by 9:30 am.
Note: this laboratory may not be turned in late!