Part 2: C and Assembly
C and Assembly programs are structured the same way: as a collection of
functions, possibly spread across multiple source files.
But C and Assembly are even more closely related: they both have the same
concept of a “function”. A function written in either language can be called
transparently from the other.
In this assignment, we’ll confirm that you have a development environment that
allows you to write, build, and run programs written in C and Assembly.
It is recommended that you use the Xbuntu VM from HW01a with the vim editor.
Using homework tarballs
The starter code for this assignment is distributed as a .tar.gz archive (a
– You can unpack this tarball with: “`tar xzvf [file].tar.gz“`
– The starter code is unpacked into a directory. You want to keep this
directory and nested directory structure so as to not confuse the
– Once you’ve completed your work in the assignment directory, you can
pack it up into a new tarball for submission
with: “`tar czvf [new-file].tar.gz [the-directory]“`
– Create a C source file, “square.c”, containing a function called
“square” that squares a long integer.
– Run “make square” and “./square 5” to verify that the provided
assembly code in “square-main.s” can call your function.
– Create an assembly source file, “cube.s”, containing a function called
“cube” that cubes a long integer (e.g. cube(3) = 27).
– Run “make cube” and “./cube 5” to verify that the provided
C code in “cube-main.c” can call your function.
– Run “perl test.t” to make sure that the autograder will be happy with
your code. Fix any issues.
– A tarball containing the starter code and your modifications.
– Make sure you don’t change the test script.