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 Language, Part 2
?
?

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:08Recap and set the stage for the day
0:08Recap and set the stage for the day
0:08Recap and set the stage for the day
1:41Continuation on the lack of a carry flag in RISC-V and MIPS, and how the RISC-V Instruction Set Manual suggests doing unsigned overflow checking1
1:41Continuation on the lack of a carry flag in RISC-V and MIPS, and how the RISC-V Instruction Set Manual suggests doing unsigned overflow checking1
1:41Continuation on the lack of a carry flag in RISC-V and MIPS, and how the RISC-V Instruction Set Manual suggests doing unsigned overflow checking1
7:36Larger-than-word sized (64-bit) multiplication in RISC-V2
7:36Larger-than-word sized (64-bit) multiplication in RISC-V2
7:36Larger-than-word sized (64-bit) multiplication in RISC-V2
14:3964-bit comparisons in terms of 32-bit comparisons
14:3964-bit comparisons in terms of 32-bit comparisons
14:3964-bit comparisons in terms of 32-bit comparisons
17:42Larger-than-word division in RISC-V, briefly3
17:42Larger-than-word division in RISC-V, briefly3
17:42Larger-than-word division in RISC-V, briefly3
20:37Lowering array indexing implemented via pointer arithmetic, from C to assembly
20:37Lowering array indexing implemented via pointer arithmetic, from C to assembly
20:37Lowering array indexing implemented via pointer arithmetic, from C to assembly
26:43tbodt_ Are ah / al like in x86?
🗪
26:43tbodt_ Are ah / al like in x86?
🗪
26:43tbodt_ Are ah / al like in x86?
🗪
27:18Naively lowering pointer subtraction from C to assembly4
27:18Naively lowering pointer subtraction from C to assembly4
27:18Naively lowering pointer subtraction from C to assembly4
34:48Inspect the debug-built assembly of pointer subtraction
🏃
34:48Inspect the debug-built assembly of pointer subtraction
🏃
34:48Inspect the debug-built assembly of pointer subtraction
🏃
36:56Inspect the release-built assembly of pointer subtraction
🏃
36:56Inspect the release-built assembly of pointer subtraction
🏃
36:56Inspect the release-built assembly of pointer subtraction
🏃
41:17Structs and unions in C
41:17Structs and unions in C
41:17Structs and unions in C
44:18Lowering a variable-initialisation-from-struct-field from C to assembly
44:18Lowering a variable-initialisation-from-struct-field from C to assembly
44:18Lowering a variable-initialisation-from-struct-field from C to assembly
52:33Loading / storing multiple fields by exploiting the load / store addressing modes with immediate offsets
52:33Loading / storing multiple fields by exploiting the load / store addressing modes with immediate offsets
52:33Loading / storing multiple fields by exploiting the load / store addressing modes with immediate offsets
58:19Knowing the ABI's size and alignment conventions when calculating offsets and sizes for structs
58:19Knowing the ABI's size and alignment conventions when calculating offsets and sizes for structs
58:19Knowing the ABI's size and alignment conventions when calculating offsets and sizes for structs
1:01:33Unions, handling overlapping offsets
1:01:33Unions, handling overlapping offsets
1:01:33Unions, handling overlapping offsets
1:05:01Structured control flow
1:05:01Structured control flow
1:05:01Structured control flow
1:08:07davechat pervognsen Who invented structured control flow?
🗪
1:08:07davechat pervognsen Who invented structured control flow?
🗪
1:08:07davechat pervognsen Who invented structured control flow?
🗪
1:09:07Recommend Knuth's 'Structured programming with go to statements'5
🖮
📖
1:09:07Recommend Knuth's 'Structured programming with go to statements'5
🖮
📖
1:09:07Recommend Knuth's 'Structured programming with go to statements'5
🖮
📖
1:14:52Structured if (without else)
1:14:52Structured if (without else)
1:14:52Structured if (without else)
1:17:24Structured if-else
1:17:24Structured if-else
1:17:24Structured if-else
1:19:39teamrandb Does Per answer questions regarding earlier streams, or is it better to just ask in discord, to not break the current stream? (I want to ask a question regarding the hash table, what he did in 11 Extra / 12)
🗪
1:19:39teamrandb Does Per answer questions regarding earlier streams, or is it better to just ask in discord, to not break the current stream? (I want to ask a question regarding the hash table, what he did in 11 Extra / 12)
🗪
1:19:39teamrandb Does Per answer questions regarding earlier streams, or is it better to just ask in discord, to not break the current stream? (I want to ask a question regarding the hash table, what he did in 11 Extra / 12)
🗪
1:20:10Generating more concise assembly for nested if within else scopes
1:20:10Generating more concise assembly for nested if within else scopes
1:20:10Generating more concise assembly for nested if within else scopes
1:21:33Structured do-while in C
1:21:33Structured do-while in C
1:21:33Structured do-while in C
1:25:39Formulating while loops as an extension of do-while
1:25:39Formulating while loops as an extension of do-while
1:25:39Formulating while loops as an extension of do-while
1:30:00Lowering a while loop from C to assembly
1:30:00Lowering a while loop from C to assembly
1:30:00Lowering a while loop from C to assembly
1:34:23Lowering a boolean comparison, making effective use of RISC-V's fused compare-and-branch instructions
1:34:23Lowering a boolean comparison, making effective use of RISC-V's fused compare-and-branch instructions
1:34:23Lowering a boolean comparison, making effective use of RISC-V's fused compare-and-branch instructions
1:41:35Structured short-circuiting "and" and "or"
1:41:35Structured short-circuiting "and" and "or"
1:41:35Structured short-circuiting "and" and "or"
1:49:00Glimpse into the future covering functions and handling more local variables than fit in registers
1:49:00Glimpse into the future covering functions and handling more local variables than fit in registers
1:49:00Glimpse into the future covering functions and handling more local variables than fit in registers
1:50:11Q&A
1:50:11Q&A
1:50:11Q&A
1:50:43teamrandb pervognsen: Regarding your hash table, specifically your string intern table – str_intern_range() in common.c – I am having a hard time visualizing how it handles collisions. Assuming you are adding a new string to the existing table, and the hash collides (even if rare), when we get to map_put_hashed() (line 322?), if you used the hash as the key, won't it just override any existing hashes?
🗪
1:50:43teamrandb pervognsen: Regarding your hash table, specifically your string intern table – str_intern_range() in common.c – I am having a hard time visualizing how it handles collisions. Assuming you are adding a new string to the existing table, and the hash collides (even if rare), when we get to map_put_hashed() (line 322?), if you used the hash as the key, won't it just override any existing hashes?
🗪
1:50:43teamrandb pervognsen: Regarding your hash table, specifically your string intern table – str_intern_range() in common.c – I am having a hard time visualizing how it handles collisions. Assuming you are adding a new string to the existing table, and the hash collides (even if rare), when we get to map_put_hashed() (line 322?), if you used the hash as the key, won't it just override any existing hashes?
🗪
1:55:00teamrandb Ah, okay. I think I get it. I guess I got confused because I thought you were doing linear probing. So the table is doing that, but the string intern is a linked list?
🗪
1:55:00teamrandb Ah, okay. I think I get it. I guess I got confused because I thought you were doing linear probing. So the table is doing that, but the string intern is a linked list?
🗪
1:55:00teamrandb Ah, okay. I think I get it. I guess I got confused because I thought you were doing linear probing. So the table is doing that, but the string intern is a linked list?
🗪
1:57:52That might be it for today, with a glimpse into the future doing hardware design
1:57:52That might be it for today, with a glimpse into the future doing hardware design
1:57:52That might be it for today, with a glimpse into the future doing hardware design