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