Homework 2: Assembly to C and Array Indexing

Assigned Saturday, October 31, 2015 Friday, November 6, 2015 at 17:00 Submit a PDF file of your solutions here.

Introduction

The purpose of written homework assignments is to get you thinking about the topics being covered in lecture and in readings in the textbook which are not represented in the hands-on, programming lab assignments. These written assignments also better prepare you for course examinations. It is worth noting that the book contains many practice problems similar to the problems we ask on these written assignments! The solutions for those practice problems are located at the end of each chapter and should give you a feel for the kind of answers we expect you to turn in for these kind of assignments.

Logistics

Please write up your answers and submit them as a PDF file in the online dropbox. This simplifies our grading and ensures we read your answers clearly. If you don't know how to create a PDF, a quick internet search should help, or ask us.

We will provide solutions to all of the problems in the written homework assignments in a timely fashion after the assignment is due. This may be around 4 or 5 days after the due date, in general, because a student may use up to 3 late days on an assignment.

Notes

Make sure you are using the 3rd edition of Computer Systems: A Programmer's Perspective. If you're not using the right book, you might be doing the wrong problems!

Questions

1. Practice Problem 3.2, p. 185. What is the appropriate instruction suffix for: `mov__ (%rdi), %eax`?
2. Practice Problem 3.3, p. 186. (Note that there are a few typos in the solution to this problem on p. 326) Describe a problem with: `movq %eax, (%rsi)`.
3. Practice Problem 3.6, p. 192. What is the result stored in %rdx for this instruction: `leaq (%rax), %rdx`.
4. Practice Problem 3.8, p. 194. Assuming the state of registers and memory after all of the instructions in the problem have been executed, describe the destination affected and the value placed there by this instruction: `leaq (,%rax,2), %rcx`.
5. Practice Problem 3.37, p. 258. Give the type, value, and assembly code for the expression: ` &S[2i + 1]`