TLB hit 💥

A podcast about systems & compilers

🐦 @TLBhit


🍎 Apple podcast

Episode 0: mov fp, sp

00:00:00 Intro

00:00:59 Disclaimer

00:01:42 What's the stack?

00:03:50 Mechanisms in the processor

00:05:10 Comparison to an abstract stack machine

00:06:05 Some instruction set considerations

00:07:09 Compiler optimizations and stackiness

00:09:17 Eliding heap allocations in C++

00:10:18 Frame pointer omission

00:11:49 "Leaf" functions

00:13:10 Why do we have a stack again?

00:16:34 Considerations beyond recursion and indirect calls?

00:18:25 Scaling to millions of threads?

00:19:10 Managed languages putting frames on the heap

00:20:20 Stack sizes in practice

00:21:27 What are the biggest stack programs?

00:22:08 Allocating default start size

00:22:58 Stacks working nicely with LRU caches

00:23:54 Broader question: how does memory in a modern computer work at all?

00:25:55 TLB Hit!

00:27:00 Store-to-load forwarding of stack values

00:27:57 Multiprocessing teaser!

00:29:00 Sparsity of stack slot usage

00:31:50 Where does the stack go?

00:33:07 Seemingly arbitrary choices in computer systems

00:35:05 Unwinding

00:36:40 Walking with frame pointer omission?

00:40:35 What are setjmp/longjmp?

00:41:53 Variable sized stack entities!

00:45:31 Stack buffer overruns

00:48:56 What are guard pages?

00:51:20 The Red Zone

00:52:00 Alignment!

00:53:45 Processes vs performance

00:55:45 Managed Virtual Machines: WebAssembly

00:58:48 Whole stack'o browser stacks

00:59:30 Managed VM's rich stack choices

01:00:40 What happens at the end of the stack?

01:03:48 Stack limit!

Terminology Glossary