ECEn 424 Review Topics: Chapter 3
ECEn 424 Review Topics: Chapter 3
- What is the relation between C, assembly code, and object code?
- What tools produce and operate on these files?
- x86-64 details:
- In general terms, how has the architecture evolved over time?
- How are the standard C data types represented and what is Intel's
terminology for these data types?
- What integer registers are available and what are the
conventions for their use?
- What addressing modes are supported and how are they specified
in assembly?
- What the major categories of instructions and what are the most
common instructions in each category?
- What are the condition codes and how are they used?
- How are common C constructs (e.g. loops, conditional
statements, switch statements) typically translated to assembly by GCC?
- What x86-64 instructions deal with the stack and how are they used?
- How are function arguments passed?
- What is the general structure of a stack frame?
- When are local variables stored in the current stack frame
rather than in registers?
- What register usage conventions must be observed by all
called functions?
- What is required to support recursive function calls?
- How are common aggregate data structures in C (e.g. arrays of
various dimensions and structures) represented in assembly?
- How do typical loops accessing array data get translated to
assembly?
- How do accesses to specific fields within a struct get mapped to
assembly?
- How are unions implemented and when are they useful?
- Can you reverse engineer (from assembly code) details about loops
and code that accesses arrays, structs, and unions?
- Why do alignment restrictions exist and how do they affect
the memory layout of C structures?
- What are the concepts underlying pointers in C, and what
operators are commonly used with pointers?
- How is the debugger GDB used and what are some of the most useful
commands?
- How is C's lack of runtime bounds checking exploited in buffer
overflow attacks?
- How do buffer overflow exploits take over a machine, and what
techniques can be used by compilers and operating systems to
prevent them (or more them much more difficult)?
- What has been added to the x86 ISA over time to support SIMD
instructions, and what impact has this had on how typical
floating-point code is compiled?
- Self test: Can you complete all practice problems in Chapter 3?
Updated for 3rd Edition of CS:APP