[video output=day3 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=intro-to-c title="Intro to C on Windows - Day 3" vod_platform=youtube id=T4CjOB0y9nI annotator=jacebennett annotator=theinternetftw] [1:16][Today: Memory] [2:38][Programming = Modifying Memory] [4:55][Recap of our program] [5:45][Brief note on the compiler warnings] [6:35][Okay: Where are the bits?] [8:05][Pointers. C lets you talk about memory.] [9:55][The syntax of Pointers: * and &] [12:01][Memory addresses, Virtual Memory] [15:11][How Virtual Memory Works] [17:39][The consequences of Virtual Memory] [18:40][Looking at pointers in the watch window] [21:04][The memory window] [22:13][Changing memory manually via the debugger] [23:34][C: the power of no protection] [24:23][A caveat: can't touch memory you don't own yet] [25:27][Getting close to the metal is awesome] [26:16][Where did this initial memory come from?] [26:55][The Stack] [28:11][Why the stack makes sense (calls and returns)] [31:11][Let's watch the stack go] [33:32][Debug mode memory cruft] [36:17][Memory moving around (Stack randomization / ASLR)] [38:19][Everything we'll do is about touching memory] [38:38][Memory control = super powers] [39:04][Where code is in memory \[n.b. watch the q&a to see this work\]] [41:57][Pictures!] [42:47][Making the trailer] [43:45][Centimeters matter to CPUs (thanks, speed of light!)] [50:35][Why it's important to know that] [51:36][Applying the same idea to PCIe] [52:40][Latency vs. Throughput/Bandwidth] [56:09][The Cache] [1:00:51][The cache miss, and the horror of... the swap!] [1:03:07][One more time, today's moral: everything we do is poking memory] [/video]