Study Guide 4
Code Jams are open book. 40 minutes in lab.
Topics:
Everything from Study Guide 3, plus
-
Generating assembly from C code
-
Building executables from assembly
-
Assembly basics: registers, instructions, and operands
-
Memory forms
-
Using GDB to step through assembly code and inspect registers
Use Assignment 07 to practice for this jam.
Practice questions
1) Consider the following programs. Use gcc
to generate the assembly code for this program.
#include <stdio.h>
int main() {
int a = 10;
int value = a / 3;
printf("values = %d", value);
}
2) Try modifying the assembly code from Q1 to divide by 5 instead of 3.
3) What are the differences between registers %rax
and %eax
. When would one be used by the other?
4) Why are there two left bit shift instructions, sal
and shl
?
5) What does the lea
instruction do?
6) How are parameters passed to functions?
7) How do we call a function in assembly?
8) What happens when we return from a function in assembly?