We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
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