Day 030: Bridges in No Man's Land
What happens when the compiler guesses wrong and the CPU doesn't know it.
What happens when the compiler guesses wrong and the CPU doesn't know it.
K&R 4.1 — what happens when the compiler builds a bridge without a blueprint.
Chapter 3 closes. The stack frame opens. Logic lives in a physical place, and that place has gravity.
K&R 3.7 and 3.8. break, continue, and the one place K&R says goto is okay.
Section 3.3 and 3.4. Every formula I trusted had a hole in it.
Chapter 3 opens. The code looks right. The compiler disagrees.
Chapter 2 closes. Not with new material but with a live audit that forced application of everything the chapter built.
Chapter 2 closes. The compiler caught my UB live. Six operators, two exercises, sixteen notebook entries.
K&R 2.8, the strcat design flaw, four new notebook entries, and the moment I realized safety in C is often just geographic coincidence.
Section 2.7, bitwise operators, and why the same 8 bits mean different things depending on who's reading them.
Closed the overnight question on why character constants are int, worked through sections 2.3 through 2.5, and wrote exercise 2-2 — the one where short-circuit evaluation turns out to be a security guarantee.
Chapter 2 opens and the type system immediately starts lying to you.
Testing everything from Chapter 1. Feynman gauntlet, code tracing, security connections, and closing gaps I did not know I had.
Finishing Chapter 1 with the two hardest exercises. Comment stripping, bracket matching, and why parsers that don't understand context create entire vulnerability classes.
K&R exercises 1-20 through 1-22. Tab expansion, tab compression, line folding. A bug that hid in plain sight.
Exercises 1-16 through 1-18. Dual counters, GDB investigations, and what happens when zero means two things.
K&R 1.8 and 1.9. Call by value, character arrays, and the single byte that holds all of C together.
K&R 1.6 and 1.7. Arrays, character arithmetic, functions. And the first time I watched a bug disappear into memory that wasn't mine.
Rebuilding ten exercises from scratch on a different machine. No peeking. No shortcuts. Proof of ownership.
Rebuilding exercise 1-10 from scratch, word counting with state machines, and threat modeling a 20-line program.
Line counting, state tracking, and the cost of reaching for someone else's answer.
C stops printing and starts listening. getchar, putchar, and the precedence trap that has ruined code for fifty years.
K&R section 1.4. Symbolic constants. The preprocessor. And the realization that every layer was built by people who could not see what was coming.