Lecture 2: x86 Assembly and Call Stack

This entire lecture is optional and won’t be tested directly on exams, but you may find it useful for Project 1. You can use the sanity check questions to determine which section(s) you want to review.

Number Representation


How many bytes are represented by `0x36`? Why?




C Memory


The compiler, assembler, linker, and loader are used to execute a C program. Which one is responsible for converting assembly code into machine code?



From lowest address to highest address, what are the four sections of C memory? What is each section used for? Which section grows up during program execution? Which section grows down during program execution?




Little-endian Words




Stack Analogy




Stack Design


In x86, what are the registers ebp, esp, and eip responsible for? What do we mean when we say these registers contain pointers?




Function Call




Function Call in x86 Assembly


You can find the complete set of function call slides here.