Resources
C tutorials and references
- Declaring Variables in C
- C Variable Types
- Printf Formatting
- C for Java Programmers (contains links to C tutorials and C reference books)
- C for Java Programmers slides (broken link on the previous page)
- A Tutorial on Pointers and Arrays in C by Ted Jensen
- Top tips to help the Java programmer code in C
IA-64 (x86) assembly language
- CMU introduction to x86-64
- Lockless Guide to Inline Assembly (linking assembly code into a C program)
- Intel x86 32 and 64 Software Developer's Manuals (These are HUGE, but don't be intimidated, you really don't need to read it all! The following sections are the ones that we think you will find most useful.)
-
- 3.4.1 General Purpose Registers
- 3.4.3 EFLAGS Register
- 3.5 Instruction pointer
- 3.6 Operand-size and address size attributes
- 3.7 Operand-addressing (you can skip 3.7.4)
- 4.1 Fundamental datatypes
- 4.2 Numeric data types
- 5.1 General purpose instructions
- 6.2 Stacks
- 6.3 Calling Procedures
Textbook
- Student resources (includes Unix FAQ, C tutorials, example code, GDB tutorials, and more.)
GDB debugger
- GDB Quick Start Guide
- Guide to Faster, Less Frustrating Debugging by Norman Matloff
- CS61 debugging tips and tricks
- GDB User Manual
- GDB usage primer video
- Useful GDB Commands
- Another GDB cheat sheet
- Insight a GDB Graphical User Interface
Working in the Shell
- 1 -
- 2 - Navigation and Directories
- 3 - Working with Files
- 4 -
- 5 -
Git
- CS61 Git notes, with links to more resources
- CS61 Diff notes
- Git Introduction Video (download and then watch)
Miscellaneous
- Machine programming
- The Story of Mel
- Programming from the Ground Up. Introduction to programming via assembly.
- Linking and loading
- Dynamic memory management
- A Memory Allocator by Doug Lea
- Memory hierarchy and memory technology
- Optimization
- About GCC printf optimization by Peter Seiderer
- Will It Optimize? from ridiculousfish
- Concurrency and synchronization
- The Little Book of Semaphores by Allen B. Downey