19/49Computing Discrete Functions... 20/49Computing Discrete Functions... 25/49Unoptimized array code fragment... 26/49Unoptimized pointer code fragment... 33/49Dynamic Storage Allocatio
Trang 2Low-Level C Programming – p 2/49
Goals
Trang 3Low-Level C Programming – p 3/49
Like Writing English
Trang 4Low-Level C Programming – p 4/49
Arithmetic
Trang 5Low-Level C Programming – p 5/49
Simple benchmarks
Trang 6Low-Level C Programming – p 6/49
Simple benchmarks
Trang 7Low-Level C Programming – p 7/49
C Arithmetic Trivia
Trang 8Low-Level C Programming – p 8/49
Arithmetic Lessons
Trang 9Low-Level C Programming – p 9/49
Bit Manipulation
Trang 10Low-Level C Programming – p 10/49
Bit-manipulation basics
Trang 11Low-Level C Programming – p 11/49
Advanced bit manipulation
Trang 12Low-Level C Programming – p 12/49
Faking Multiplication
Trang 13Low-Level C Programming – p 13/49
Faking Multiplication
Trang 14Low-Level C Programming – p 14/49
Faking Division
Trang 15Low-Level C Programming – p 15/49
Multi-way branches
Trang 16Low-Level C Programming – p 16/49
Nios code for if-then-else
Trang 17Low-Level C Programming – p 17/49
Nios code for switch (1)
Trang 18Low-Level C Programming – p 18/49
Nios code for switch (2)
Trang 19Low-Level C Programming – p 19/49
Computing Discrete Functions
Trang 20Low-Level C Programming – p 20/49
Computing Discrete Functions
Trang 21Low-Level C Programming – p 21/49
Function calls
Trang 22Low-Level C Programming – p 22/49
Code for foo() (unoptimized)
Trang 23Low-Level C Programming – p 23/49
Code for foo() (optimized)
Trang 24Low-Level C Programming – p 24/49
Strength Reduction
Trang 25Low-Level C Programming – p 25/49
Unoptimized array code (fragment)
Trang 26Low-Level C Programming – p 26/49
Unoptimized pointer code (fragment)
Trang 27Low-Level C Programming – p 27/49
Optimized (–O2) array code
Trang 28Low-Level C Programming – p 28/49
Optimized (–O2) pointer code
Trang 29Low-Level C Programming – p 29/49
How Rapid is Rapid?
Trang 30Low-Level C Programming – p 30/49
Double-checking
Trang 31Low-Level C Programming – p 31/49
Features in order of increasing cost
Trang 32Low-Level C Programming – p 32/49
Storage Classes in C
Trang 33Low-Level C Programming – p 33/49
Dynamic Storage Allocation
Trang 34Low-Level C Programming – p 34/49
Dynamic Storage Allocation
Trang 35Low-Level C Programming – p 35/49
Simple Dynamic Storage Allocation
Trang 36Low-Level C Programming – p 36/49
Dynamic Storage Allocation
Trang 37Low-Level C Programming – p 37/49
Simple Dynamic Storage Allocation
Trang 38Low-Level C Programming – p 38/49
Storage Classes Compared
Trang 39Low-Level C Programming – p 39/49
Memory-Mapped I/O
Trang 40Low-Level C Programming – p 40/49
Memory-Mapped I/O Access in C
Trang 41Low-Level C Programming – p 41/49
What’s With the Volatile?
Trang 42Low-Level C Programming – p 42/49
Altera I/O
Trang 43Low-Level C Programming – p 43/49
HW/SW Communication Styles
Trang 44Low-Level C Programming – p 44/49
HW/SW Communication: Interrupts
Trang 45Low-Level C Programming – p 45/49
Unix Signals
Trang 46Low-Level C Programming – p 46/49
Interrupts under Altera (1)
Trang 47Low-Level C Programming – p 47/49
Interrupts under Altera (2)
Trang 48Low-Level C Programming – p 48/49
Debugging Skills
Trang 49Low-Level C Programming – p 49/49
The Edwards Way to Debug