How To Program Assembly, Part 3
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:00Recap and set the stage for the final part of the assembly writing tutorial
0:00Recap and set the stage for the final part of the assembly writing tutorial
0:00Recap and set the stage for the final part of the assembly writing tutorial
0:30Shout-out to godbolt1 for its assembly exploration capabilities
📖
0:30Shout-out to godbolt1 for its assembly exploration capabilities
📖
0:30Shout-out to godbolt1 for its assembly exploration capabilities
📖
4:25Switch statements
4:25Switch statements
4:25Switch statements
8:15Implementing switch using a jump table
8:15Implementing switch using a jump table
8:15Implementing switch using a jump table
15:10Throw a switch statement into godbolt2 to see what riscv32 clang and x86-64 MSVC generate
📖
15:10Throw a switch statement into godbolt2 to see what riscv32 clang and x86-64 MSVC generate
📖
15:10Throw a switch statement into godbolt2 to see what riscv32 clang and x86-64 MSVC generate
📖
21:36Compressing a lookup table when it has few distinct entries relative to the total number of keys
21:36Compressing a lookup table when it has few distinct entries relative to the total number of keys
21:36Compressing a lookup table when it has few distinct entries relative to the total number of keys
24:28Lowering a jump table-based switch statement, without the compressed table indirection, from C to assembly
24:28Lowering a jump table-based switch statement, without the compressed table indirection, from C to assembly
24:28Lowering a jump table-based switch statement, without the compressed table indirection, from C to assembly
38:14Functions3
38:14Functions3
38:14Functions3
51:55Calls and returns, and RISC-V's JAL and JMP instructions
51:55Calls and returns, and RISC-V's JAL and JMP instructions
51:55Calls and returns, and RISC-V's JAL and JMP instructions
58:35Lowering our example fact() function from C to assembly4
58:35Lowering our example fact() function from C to assembly4
58:35Lowering our example fact() function from C to assembly4
1:07:00cubercaleb What is meant by the function epilogue and prologue? Is that just a fancy way of saying "stack setup and tear-down", or does something actually happen?5
🗪
1:07:00cubercaleb What is meant by the function epilogue and prologue? Is that just a fancy way of saying "stack setup and tear-down", or does something actually happen?5
🗪
1:07:00cubercaleb What is meant by the function epilogue and prologue? Is that just a fancy way of saying "stack setup and tear-down", or does something actually happen?5
🗪
1:07:59Lowering fact() from C to assembly using a callee-save register
1:07:59Lowering fact() from C to assembly using a callee-save register
1:07:59Lowering fact() from C to assembly using a callee-save register
1:13:18Designating registers as caller- vs callee-save, as demonstrated by leaf functions
1:13:18Designating registers as caller- vs callee-save, as demonstrated by leaf functions
1:13:18Designating registers as caller- vs callee-save, as demonstrated by leaf functions
1:17:33Summarise the handling of more complex functions
1:17:33Summarise the handling of more complex functions
1:17:33Summarise the handling of more complex functions
1:18:30cubercaleb Isn't ret a CISC-like instruction, e.g. MIPS requires `jr $ra`?6
🗪
1:18:30cubercaleb Isn't ret a CISC-like instruction, e.g. MIPS requires `jr $ra`?6
🗪
1:18:30cubercaleb Isn't ret a CISC-like instruction, e.g. MIPS requires `jr $ra`?6
🗪
1:20:53Consider going on to nested / compound expressions
1:20:53Consider going on to nested / compound expressions
1:20:53Consider going on to nested / compound expressions
1:21:43Note the assumption that local variables don't need to be spilt
1:21:43Note the assumption that local variables don't need to be spilt
1:21:43Note the assumption that local variables don't need to be spilt
1:25:08Flattening expressions and register allocations
1:25:08Flattening expressions and register allocations
1:25:08Flattening expressions and register allocations
1:29:30Flattening a right-associative expression7
1:29:30Flattening a right-associative expression7
1:29:30Flattening a right-associative expression7
1:36:02Summarise the expression and register allocations information
1:36:02Summarise the expression and register allocations information
1:36:02Summarise the expression and register allocations information
1:37:18That's it for today
1:37:18That's it for today
1:37:18That's it for today